Ruby 选择Selenium 2.9中的图像
我正在这里实习,我正在尝试使用RSpec来尝试自动化维护后周末的测试。我使用SeleniumWebDriver 2.9.0启动skelton,然后添加个性化代码。我目前一直在尝试让WebDriver单击一个图像,然后导航到正确的HTML,但我目前无法这样做。这是我到目前为止所拥有的Ruby 选择Selenium 2.9中的图像,ruby,selenium,rspec,selenium-ide,finder,Ruby,Selenium,Rspec,Selenium Ide,Finder,我正在这里实习,我正在尝试使用RSpec来尝试自动化维护后周末的测试。我使用SeleniumWebDriver 2.9.0启动skelton,然后添加个性化代码。我目前一直在尝试让WebDriver单击一个图像,然后导航到正确的HTML,但我目前无法这样做。这是我到目前为止所拥有的 it "can go to Ultratime" do @ie_driver.find_element(:link, "My Resources").click wait.until { @
it "can go to Ultratime" do
@ie_driver.find_element(:link, "My Resources").click
wait.until { @ie_driver.execute_script("return document.readyState;") == "complete" }
sleep 3
wait.until { @ie_driver.find_element(:link_text => "Login").displayed?}
#test above line
puts "found Ultratime"
#this just finds the "Logout" button and clicks it
@ie_driver.find_element(:name, "ee").click
end
以下是与我试图浏览的站点的“按钮”相关的html代码:
<body id="ultratime-insidend" class="ultratime ultratime-insidend ">
<p id="ultratime">
<a class="single" href="#">
<img alt="Ultratime" src="https://controller.nd.edu/stylesheets/images/logo2.gif"></img>
Login
</a>
任何帮助都将不胜感激 单击图像就像单击任何其他元素一样。如果您在定位图像时遇到问题,请给它
id
并使用css选择器,即
driver.find_element_by_css_selector("#yourimageid").click()
driver.find_element_by_css_selector("#yourimageid").click()
编辑:要将焦点切换到帧,请使用:
driver.switch_to.frame driver.find_element(..)
driver.switch_to.frame driver.find_element(..)
如果您不能设置ID,任何定位器都应该工作,比如
drive.switch_to.frame driver.find_element( :xpath, "//iframe" )
drive.switch_to.frame driver.find_element( :xpath, "//iframe" )
单击图像就像单击任何其他元素一样。如果您在定位图像时遇到>问题,请给它id并使用css选择器,即
driver.find_element_by_css_selector("#yourimageid").click()
driver.find_element_by_css_selector("#yourimageid").click()
编辑:要将焦点切换到帧,请使用:
driver.switch_to.frame driver.find_element(..)
driver.switch_to.frame driver.find_element(..)
如果您不能设置ID,任何定位器都应该工作,比如
drive.switch_to.frame driver.find_element( :xpath, "//iframe" )
drive.switch_to.frame driver.find_element( :xpath, "//iframe" )
谢谢你Borsunho,在发现我需要先找到iframe之后,事情变得简单多了。这就是我的最终结果:
it "can go to Ultratime", focus: true do
@ie_driver.find_element(:link, "My Resources").click
@ie_driver.switch_to.frame(@ie_driver.find_element(:css, 'iframe[src="https://controller.nd.edu/ultratime/insidend/"]'))
@ie_driver.find_element(:class,"single").click
end
我还应该补充一点,我最终得到的错误是一个超时错误,因为它“无法找到linktext==Login的元素”,不幸的是,我没有添加id标记的权限。我发现问题在于图像在iframe中。所以它找不到元素的原因是,在我找到元素之前,我需要先将焦点转移到iframe上……不幸的是,我对Ruby是新手,所以我必须弄清楚如何将焦点设置到iframe上。