2013-09-30 76 views
3

我试图自动化的移动浏览器,使用与Ruby脚本硒(Android的驱动程序)时, 这里是相同Android的驱动程序抛出的错误,试图自动化

require 'selenium-webdriver' 
require "selenium/client" 
caps = Selenium::WebDriver::Remote::Capabilities.android 
client = Selenium::WebDriver::Remote::Http::Default.new 
client.timeout = 480 
driver = Selenium::WebDriver.for( 
    :remote, 
    :url => "http://localhost:8080/wd/hub/", 
    :http_client => client, 
    :desired_capabilities => caps) 
driver.navigate.to "http://www.google.com" 
element = driver.find_element(:name, 'q') 
element.send_keys "Example google" 
element.submit 
puts driver.title 
driver.quit 

示例脚本,它执行的步骤,直到sendkeys,一步,但在这之后,它抛出错误,捕获错误是

EOFError: end of file reached 
     from C:/Ruby200/lib/ruby/2.0.0/net/protocol.rb:153:in `read_nonblock' 
     from C:/Ruby200/lib/ruby/2.0.0/net/protocol.rb:153: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_l 
ine' 
     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_r 
equest' 
     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.35.1/lib/s 
elenium/webdriver/remote/http/default.rb:83:in `response_for' 
     from C:/Ruby200/lib/ruby/gems/2.0.0/gems/selenium-webdriver-2.35.1/lib/s 
elenium/webdriver/remote/http/default.rb:39:in `request' 
     from C:/Ruby200/lib/ruby/gems/2.0.0/gems/selenium-webdriver-2.35.1/lib/s 
elenium/webdriver/remote/http/common.rb:40:in `call' 
     from C:/Ruby200/lib/ruby/gems/2.0.0/gems/selenium-webdriver-2.35.1/lib/s 
elenium/webdriver/remote/bridge.rb:634:in `raw_execute' 
     from C:/Ruby200/lib/ruby/gems/2.0.0/gems/selenium-webdriver-2.35.1/lib/s 
elenium/webdriver/remote/bridge.rb:612:in `execute' 
     from C:/Ruby200/lib/ruby/gems/2.0.0/gems/selenium-webdriver-2.35.1/lib/s 
elenium/webdriver/remote/bridge.rb:428:in `submitElement' 
     from C:/Ruby200/lib/ruby/gems/2.0.0/gems/selenium-webdriver-2.35.1/lib/s 
elenium/webdriver/common/element.rb:179:in `submit' 
     from (irb):14 
     from C:/Ruby200/bin/irb:12:in `<main>'irb(main):015:0> puts driver.title 

我也试过在IRB所有命令,以确认其不会因超时异常。 请建议,问题到底是什么,以及如何从移动浏览器自动化中的这种场景中解脱出来。

感谢提前:)

+0

好奇 - 你有意使用集线器吗?或者你是否试图在本地运行? – sircapsalot

+0

我试图在本地运行它,在模拟器上运行它。 –

+0

好的,因为你使用的是集线器..集线器应该是专用的机器。我会回答这个问题 - – sircapsalot

回答

0

我得到EOF错误,同时自动针对实际设备和仿真器(虽然在不同的点)。

解决方案是卸载新的android-server-2.32.0.apk并安装旧版本的android-server-2.21.0.apk。

相关问题