我正在尝试实施以下方法硒网络驱动程序 (ruby)
- 获取所有窗口 ID
- 获取所有窗口标题
- 获取所有窗口名称
- 我运行 Selenium IDE 并将脚本导出到 Ruby Test::Unit。将其另存为 .rb
- 使用 Aptana Studio 3 打开我的脚本进行编辑
- 初始代码片段如下:
require "rubygems"
require "selenium-webdriver"
require "test/unit"
class SwitchToPopup3 < Test::Unit::TestCase
def setup
@driver = Selenium::WebDriver.for :firefox
@base_url = (URL of my test website)
@driver.manage.timeouts.implicit_wait = 30
@verification_errors = []
end
def teardown
@driver.quit
assert_equal [], @verification_errors
end
def test_switch_to_popup3
.
.
puts @driver.get_all_window_ids()
puts @driver.get_all_window_titles()
puts @driver.get_all_window_names()
.
.
end
我不断收到的错误是
NoMethodError: undefined method `get_all_window_ids' for # <Selenium::WebDriver::Driver:0x101e4b040 browser=:chrome>
/Users/rsucgang/Documents/Aptana Studio 3 Workspace/Testing/SwitchToPopup2.rb:37:in `test_switch_to_popup3'
我研究了 selenium-webdriver 的 ruby 绑定的文档
http://selenium.googlecode.com/svn/trunk/docs/api/rb/Selenium/Client/GenerateDriver.html#get_all_window_titles-instance_method
最终我的目标是运行我的自动化脚本:
- 单击打开一个新窗口的链接,其中 target=_blank 并且没有可用的 windowID(未实现 JS)
- 识别浏览器中所有打开的窗口的名称
- 使用 switchToWindow(name) 方法切换到新的弹出窗口
- 继续在弹出窗口上运行我的脚本
贾斯汀,你的方法很好。但是假设窗口句柄将以正确的顺序返回存在一个问题。所有浏览器的情况并非总是如此。我在免费的每周 Selenium 技巧时事通讯 (elemental-selenium.com) 中概述了一种略有不同的方法。
事情是这样的:
@driver.get 'http://the-internet.herokuapp.com/windows'
main_window = @driver.window_handle
@driver.find_element(css: '.example a').click
windows = @driver.window_handles
windows.each do |window|
if main_window != window
@new_window = window
end
end
@driver.switch_to.window(main_window)
@driver.title.should_not =~ /New Window/
@driver.switch_to.window(@new_window)
@driver.title.should =~ /New Window/
您可以看到完整的提示here.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)