我正在尝试从 selenium-webdriver (ruby)实现以下方法
get_all_window_names
我运行Selenium IDE并将脚本导出到Ruby Test :: Unit。将其另存为.rb
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的红宝石绑定文档
http://selenium.googlecode.com/svn/trunk/docs/api/rb/Selenium/Client/GeneratedDriver.html#get_all_window_titles-
instance_method
最终,我的目标是运行自动化脚本:
我已经在互联网上进行了搜索和研究,但没有得到太多信息。
谢谢,如果您需要更多信息,请告诉我。
问题是,get_all_window_ids
它用于Selenium :: Client而不是Selenium ::
Webdriver。我相信Selenium :: Client是旧版本的Selenium,并且API与Selenium ::
Webdriver不同(请参见此处)。由于您使用的是Selenium
:: Webdriver,因此可以解释为什么出现“未定义的方法”错误。
对于Selenium :: Webdriver,我知道如何在Windows之间切换的唯一方法是使用:
@driver.switch_to.window("<window_handle>")
您可以通过以下方式获取所有已知的window_handles:
@driver.window_handles
#=> Returns all window handles as an array of strings
如果要切换到刚打开的弹出窗口,可以执行以下操作。请注意,这.window_handles
是按照打开窗口的顺序进行的,我认为这是事实:
@driver.switch_to.window @driver.window_handles.last
总而言之,假设您只关心访问弹出窗口(而不关心按名称访问),则可以执行以下操作:
#Click control that opens popup
@driver.find_element(:id, 'button that opens popup').click
#Switch to popup
@driver.switch_to.window @driver.window_handles.last
#Do actions in new popup
@driver.find_element(:id, 'id of element in popup').click
请注意,如果使用弹出窗口后,您将要返回到原始窗口,那么建议您执行以下操作。通过将一个块传递给switch_to.window
,该块将在弹出窗口中执行,并且当该块结束时@driver
将自动指向原始窗口。
#Click control that opens popup
@driver.find_element(:id, 'button that opens popup').click
#Switch to popup
@driver.switch_to.window( @driver.window_handles.last ){
#Do actions in new popup
@driver.find_element(:id, 'id of element in popup').click
}
#Continue with original window
@driver.find_element(:id, 'button in original window').click
有没有什么方法可以得到窗口标题而不做任何开关在硒? 目前我正在使用以下代码:
问题内容: 当我同时执行多个测试时,我不想保持Firefox浏览器窗口可见。我可以使用来最小化它,但我不想这样做。 有什么办法可以隐藏Firefox窗口吗?我正在使用FireFox WebDriver。 问题答案: 最终,我找到了使用Windows Machine通过任何方法运行测试的用户的解决方案。嗯,实现不是用Java编写的,但是您可以很容易地做到。 使用工具。它具有处理窗口的所有功能。这是一
我有一个python脚本,它每小时从网站上删除数据。它目前存储在服务器上,并且运行良好,因为我正在使用任务调度程序来安排它每小时执行脚本。 我正在使用此代码 要退出浏览器窗口 我的问题是,每当我不登录服务器时,它都会开始堆叠网络驱动程序窗口,因为当我登录服务器时,driver.quit() 函数不知何故不起作用。每天早上上班时,我都有大量的窗口要关闭服务器。 我试图退出、关闭、处置,但无济于事。我
问题内容: 我正在尝试获取Selenium Webdriver中的标题。类似于以下内容: 我需要使用网络驱动程序,因为它支持Flash和测试网页所需的其他功能。这是我到目前为止在Selenium中拥有的东西: 我还看到了一些其他建议,建议运行整个selenium服务器以获取此信息(https://github.com/derekargueta/selenium- profiler )。我如何使用与
我无法在窗口之间切换。打开弹出窗口时光标被击中。无法再前进了。测试案例:打开URL:http://voltaerp.cloudapp.net/VomsDemoV2/点击查询选项卡,然后点击子菜单项“国外查询”。这将把用户重定向到国外查询页面。现在单击绿色加号从弹出菜单中选择一个项目。我到现在都很好。一旦窗口打开,代码就会被卡住。无法读取弹出窗口的ID或将驱动程序切换到弹出窗口,以便我可以选择任何项