如果它是display:none,如何在页面上找到一个css元素?

时间:2017-03-11 19:16:06

标签: ruby selenium testing rspec

我在Ruby中运行自动化测试。

我正在尝试编写一个脚本,找到display:none的ID(仅在移动设备中可见),然后点击它。

这是我的代码:

def open_menu
   page.find[:css, "a[id='mobile-nav-link']", visible: false].click
end

它给了我一个错误:

   Selenium::WebDriver::Error::InvalidSelectorError:
   invalid selector: No selector specified

2 个答案:

答案 0 :(得分:0)

Selenium只与用户的方式相互作用。

如果链接仅在移动设备中可见,我建议使用以下其中一种。

  1. 通过移动网址查看该页面。

  2. 您可能可以使用Ruby的javascript执行来更新控件以使其可见,或者设置指示您通过移动设备查看页面的值

  3. 更新控件以显示

    此链接讨论了如何使用javascript execute Selenium Webdriver - click on hidden elements

    将元素设置为可见元素

    此链接讨论了如何使用ruby的javascript执行:How to execute Javascript in Ruby written Webdriver test?

    把两者放在一起,你会得到这样的东西吗?

    def open_menu
        elem = page.find[:css, "a[id='mobile-nav-link']", visible: false]
        js = "arguments[0].style.height='auto' arguments[0].style.visibility='visible';"
        driver.execute_script(js , elem)
        page.find[:css, "a[id='mobile-nav-link']", visible: true].click
    end
    

    我并不完全熟悉Ruby语法,因此我不保证它可以复制/粘贴。

答案 1 :(得分:0)

快速搜索显示使用圆括号的类似代码,而非方形。即:

def open_menu
   page.find(:css, "a[id='mobile-nav-link']", visible: false).click
end