Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 选择Selenium 2.9中的图像_Ruby_Selenium_Rspec_Selenium Ide_Finder - Fatal编程技术网

Ruby 选择Selenium 2.9中的图像

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 { @

我正在这里实习,我正在尝试使用RSpec来尝试自动化维护后周末的测试。我使用SeleniumWebDriver 2.9.0启动skelton,然后添加个性化代码。我目前一直在尝试让WebDriver单击一个图像,然后导航到正确的HTML,但我目前无法这样做。这是我到目前为止所拥有的

   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上。