【发布时间】:2016-03-09 01:27:51
【问题描述】:
我编写了一个 Ruby 脚本来使用 IE 自动执行一些用户操作。 我正在为 IE 使用 Selenium Web 驱动程序。下面是我的代码。
require 'selenium-webdriver'
browser = Selenium::WebDriver.for :ie
first_window = browser.window_handle
browser.switch_to.frame(browser.find_element(:id=> 'outerFrame'))
browser.switch_to.frame(browser.find_element(:id=> 'innerFrame'))
table_rows = browser.find_element(:id=> 'AllItems').find_element(:tag_name=> 'table').find_elements(:tag_name=> 'tr')
count_cell = table_rows.at(table_rows.length-1).find_elements(:tag_name=> 'td').at(1).find_element(:tag_name=> 'a')
count_cell.click
sleep(5)
all_windows = browser.window_handles
new_window = browser.window_handles.last
browser.switch_to.window(new_window)
btn = browser.find_element(:id=> 'btn_export')
btn.click
在某一时刻,单击一个按钮后,会打开一个新页面。现在,当我尝试切换到新窗口时,出现以下错误。
C:/Ruby21/lib/ruby/2.1.0/net/http.rb:879:in 'initialize': 否 可以建立连接,因为目标机器主动拒绝 它。 - 为“127.0.0.1”端口 5555 连接(2)(Errno::ECONNREFUSED) 来自 C:/Ruby21/lib/ruby/2.1.0/net/http.rb:879:in 'open' 来自 C:/Ruby21/lib/ruby/2.1.0/net/http.rb:879:in 'block in connect' 来自 C:/Ruby21/lib/ruby/2.1.0/timeout.rb:75:in 'timeout' 来自 C:/Ruby21/lib/ruby/2.1.0/net/http.rb:878:in 'connect' 来自 C:/Ruby21/lib/ruby/2.1.0/net/http.rb:863:in 'do_start' 来自 C:/Ruby21/lib/ruby/2.1.0/net/http.rb:852:in 'start' 来自 C:/Ruby21/lib/ruby/2.1.0/net/http.rb:1375:in 'request' 来自 C:/Ruby21/lib/ruby/gems/2.1.0/gems/selenium-webdriver-2.48.1/lib/selenium/webdriver/remote/http/default.rb:107:in 'response_for' 来自 C:/Ruby21/lib/ruby/gems/2.1.0/gems/selenium-webdriver-2.48.1/lib/selenium/webdriver/remote/http/default.rb:58:in '要求' 来自 C:/Ruby21/lib/ruby/gems/2.1.0/gems/selenium-webdriver-2.48.1/lib/selenium/webdriver/remote/http/common.rb:59:in '称呼' 来自 C:/Ruby21/lib/ruby/gems/2.1.0/gems/selenium-webdriver-2.48.1/lib/selenium/webdriver/remote/bridge.rb:664:in '原始执行' 来自 C:/Ruby21/lib/ruby/gems/2.1.0/gems/selenium-webdriver-2.48.1/lib/selenium/webdriver/remote/bridge.rb:642:in '执行' 来自 C:/Ruby21/lib/ruby/gems/2.1.0/gems/selenium-webdriver-2.48.1/lib/selenium/webdriver/remote/bridge.rb:216:in '切换到窗口' 来自 C:/Ruby21/lib/ruby/gems/2.1.0/gems/selenium-webdriver-2.48.1/lib/selenium/webdriver/common/target_locator.rb:81:in '窗户' 来自 script.rb:18:in ''
我尝试通过修改防火墙并为端口 5555 添加规则来解决错误。即便如此,问题仍然存在。我发现了一些已经存在的问题,但大多数都与 Java 或 .Net 有关。如何解决此错误?谁能指出我正确的方向?
【问题讨论】:
-
在 chrome 或 firefox 上会发生同样的事情吗?
-
该站点是特定于 IE 的。它不会在其他浏览器上打开。
-
在点击进入新窗口之前保存第一个网页的窗口句柄然后点击,操作完成后使用保存的窗口句柄返回原始屏幕
-
我目前也在做同样的事情。 “count_cell.click”是打开一个新页面的步骤。
-
如果您可以提供一些 html/css/js 来重现该问题,它可能有助于我们调试。可以重现它的最简单的例子。
标签: ruby internet-explorer selenium selenium-webdriver