如何使用selenium-webdriver自动化CEF3应用程序

时间:2015-02-13 19:47:54

标签: selenium-webdriver chromium-embedded cefsharp

我使用selenium-webdriver自动化基于CefSharp(CEF3)的应用程序,但不断出现错误。

我使用以下Ruby脚本启动CEF应用程序:

require "selenium-webdriver"
cefpath = 'C:\mypathto\cefapp.exe'
Selenium::WebDriver::Chrome.path = cefpath
browser = Selenium::WebDriver.for :chrome
......

运行时,它会打开CEF应用程序(Chrome的容器),但随后出现以下错误:

C:/Ruby200/lib/ruby/2.0.0/net/protocol.rb:158:in `rescue in rbuf_fill': Net::ReadTimeout (Net::ReadTimeout)
        from C:/Ruby200/lib/ruby/2.0.0/net/protocol.rb:152:in `rbuf_fill'
        from C:/Ruby200/lib/ruby/2.0.0/net/protocol.rb:134:in `readuntil'
        from C:/Ruby200/lib/ruby/2.0.0/net/protocol.rb:144:in `readline'
        from C:/Ruby200/lib/ruby/2.0.0/net/http/response.rb:39:in `read_status_line'
        from C:/Ruby200/lib/ruby/2.0.0/net/http/response.rb:28:in `read_new'
        from C:/Ruby200/lib/ruby/2.0.0/net/http.rb:1406:in `block in transport_request'
        from C:/Ruby200/lib/ruby/2.0.0/net/http.rb:1403:in `catch'
        from C:/Ruby200/lib/ruby/2.0.0/net/http.rb:1403:in `transport_request'
        from C:/Ruby200/lib/ruby/2.0.0/net/http.rb:1376:in `request'
        from C:/Ruby200/lib/ruby/2.0.0/net/http.rb:1369:in `block in request'
        from C:/Ruby200/lib/ruby/2.0.0/net/http.rb:852:in `start'
        from C:/Ruby200/lib/ruby/2.0.0/net/http.rb:1367:in `request'
        from C:/Ruby200/lib/ruby/gems/2.0.0/gems/selenium-webdriver-2.42.0/lib/selenium/webdriver/remote/http/default.rb:83:in `response_for'
        from C:/Ruby200/lib/ruby/gems/2.0.0/gems/selenium-webdriver-2.42.0/lib/selenium/webdriver/remote/http/default.rb:39:in `request'
        from C:/Ruby200/lib/ruby/gems/2.0.0/gems/selenium-webdriver-2.42.0/lib/selenium/webdriver/remote/http/common.rb:40:in `call'
        from C:/Ruby200/lib/ruby/gems/2.0.0/gems/selenium-webdriver-2.42.0/lib/selenium/webdriver/remote/bridge.rb:634:in `raw_execute'
        from C:/Ruby200/lib/ruby/gems/2.0.0/gems/selenium-webdriver-2.42.0/lib/selenium/webdriver/remote/bridge.rb:99:in `create_session'
        from C:/Ruby200/lib/ruby/gems/2.0.0/gems/selenium-webdriver-2.42.0/lib/selenium/webdriver/remote/bridge.rb:68:in `initialize'
        from C:/Ruby200/lib/ruby/gems/2.0.0/gems/selenium-webdriver-2.42.0/lib/selenium/webdriver/chrome/bridge.rb:29:in `initialize'
        from C:/Ruby200/lib/ruby/gems/2.0.0/gems/selenium-webdriver-2.42.0/lib/selenium/webdriver/common/driver.rb:37:in `new'
        from C:/Ruby200/lib/ruby/gems/2.0.0/gems/selenium-webdriver-2.42.0/lib/selenium/webdriver/common/driver.rb:37:in `for'
        from C:/Ruby200/lib/ruby/gems/2.0.0/gems/selenium-webdriver-2.42.0/lib/selenium/webdriver.rb:67:in `for'

知道为什么吗?

非常感谢。

1 个答案:

答案 0 :(得分:0)

确保使用最新的ChromiumDriver / Selenium版本。根据这个:

https://code.google.com/p/chromiumembedded/wiki/UsingChromeDriver

CEF适用于ChromeDriver版本2.14和Selenium 2.44.0。