Question / Problem:
What is the difference between webkit and Chromium Embedded Framework (CEF) browser?
Answer / Solution:
Webkit relies on receiving the complete state of the page (web and java script) from the webserver.
During execution webkit manipulates the state (e.g. snapshots are taken before try steps, branches, For Each loops and they are restored when going to a new branch/iteration)
CEF uses a new robot language that doesn't work with states. Therefore CEF can render pages that keep (at least) part of their state on the webserver and the information is sent to the browser gradually. This also means that there are no snapshots being taken/restored in CEF so the workflow in CEF will be slightly different than webkit.
E.g. in webkit - for a For Each loop no steps are needed at the end of each iteration to make sure the robot goes back to the original page (so it can pick up a new tag and go into the next iteration). On each iteration the For Each loop will restore the snapshot taken before the loop so it will restore the original page itself.
CEF will not restore a snapshot with the page steps so on loops CEF will need steps to go back to the original page.
Other differences and similarities
|Versions||was introduced in v9.3||was introduced in v10.3|
|Launch||Webkit is one of the native browsers and it can be selected at the time the robot is created||
CEF can be started from a Desktop Automation step (no mapping needed).
See How to use CEF article.
Has some unsupported features because the java script engine it uses
See Unsupported features.
Should be able to execute modern Java Script (depending on the product version used)
|Linux compatibility||Works in Linux environments. Need specific libraries installed, see Installation Guide for the complete list.||Works in Linux environments. Need specific libraries installed, see Installation Guide for the complete list.|
Webkit browser will continue to be available and will be maintained in the future versions. However, as websites change, webkit might not be able to render all of them - because a lot of websites move to being more server-based (where their state is stored on the webserver)