cefpython icon indicating copy to clipboard operation
cefpython copied to clipboard

Example of automation using WebDriver/ChromeDriver2

Open GoogleCodeExporter opened this issue 10 years ago • 2 comments

Example code is available in the next comment by Finn Hughes.

See the WebDriver for Google Chrome: https://sites.google.com/a/chromium.org/chromedriver/

ChromeDriver2 has been verified to work with CEF3: https://bitbucket.org/chromiumembedded/cef/issues/549/cef3-add-webdriver-support

There is a tutorial in upstream CEF on how to use Chrome Driver with CEF: https://bitbucket.org/chromiumembedded/cef/wiki/UsingChromeDriver

See also: https://github.com/sokolnikovalexey/cef-pyhton-selenium

GoogleCodeExporter avatar Aug 28 '15 10:08 GoogleCodeExporter

In my cefpython application I specify a remote debug port:

 switches = {"remote-debugging-port": "22222"}
 cefpython.Initialize(settings, switches)

Run chromedriver:

 chromedriver --port=33333

I'm using selenium python bindings:

 from selenium import webdriver
 chromeOptions = {'debuggerAddress':'192.168.1.42:22223'}
 capabilities = {'chromeOptions':chromeOptions}
 browser = webdriver.Remote('http://127.0.0.1:33333' capabilities)
 browser.get("http://www.google.com"
 ....

I wanted chromedriver and selenium on a remote machine so used an ssh tunnel on the client:

 ssh -L 0.0.0.0:22223:localhost:22222 localhost

A nice bonus is that in chrome I can access "192.168.1.42:22223" and can use the chrome dev tools on the open tabs in my remote browser.

P.S. If you don't want to specify the port you need to add the "--remote-debugging-port" chromedriver supplies your app to the switches dictionary. Also in the selenium script:

 options = webdriver.ChromeOptions()
 options.binary_location = "/path/to/app"
 browser = webdriver.Chrome(chrome_options=options)

Original comment by [email protected] on 13 Jan 2014 at 1:57

GoogleCodeExporter avatar Aug 28 '15 10:08 GoogleCodeExporter

@finn.hughes1 31.0 release added support for Developer Tools. Also the --remote-debugging-port switch might not work as expected anymore, because a random port is generated by default when ApplicationSettings."remote_debugging_port" is not set. Thus you need to set it explicitilly (also to disable).

Original comment by [email protected] on 11 Aug 2014 at 7:16

GoogleCodeExporter avatar Aug 28 '15 10:08 GoogleCodeExporter