【问题标题】:Select Image in Selenium 2.9在 Selenium 2.9 中选择图像
【发布时间】:2015-07-24 14:32:19
【问题描述】:

我正在尝试使用 RSpec 来尝试自动化测试,以便在我正在实习的维护后周末进行测试。我正在使用 Selenium WebDriver 2.9.0 让骨架运行,然后添加个性化代码。我目前坚持的是试图让 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>

任何帮助将不胜感激!

【问题讨论】:

  • 我还应该补充一点,我最终得到的错误是超时错误,因为它是“无法找到带有链接文本的元素 == 登录”

标签: ruby selenium rspec selenium-ide finder


【解决方案1】:

点击图片就像点击任何其他元素一样。如果您在定位图像时遇到问题,请给它id 并使用 css 选择器,即

driver.find_element_by_css_selector("#yourimageid").click()

编辑:将焦点切换到框架,使用:

driver.switch_to.frame driver.find_element(..)

任何定位器都应该可以工作,如果你不能设置 ID,比如

drive.switch_to.frame driver.find_element( :xpath, "//iframe" )

【讨论】:

  • 很遗憾,我无权添加 id 标签。我发现问题是图像在 iframe 内。所以它无法找到元素的原因是因为我需要先将焦点转移到 iframe 才能找到元素......不幸的是我是 Ruby 新手,所以我必须弄清楚如何设置iframe 的焦点。
【解决方案2】:

点击图片就像点击任何其他元素一样。如果您有 >problem locating image,给它 id 并使用 css 选择器,即

driver.find_element_by_css_selector("#yourimageid").click()

编辑:将焦点切换到框架,使用:

driver.switch_to.frame driver.find_element(..)

任何定位器都应该可以工作,如果你不能设置 ID,比如

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

【讨论】:

    猜你喜欢
    • 2015-08-06
    • 1970-01-01
    • 2015-01-23
    • 2015-02-21
    • 1970-01-01
    • 2016-03-05
    • 1970-01-01
    • 2016-08-29
    • 2023-04-11
    相关资源
    最近更新 更多