Ruby 如果页面上的css元素为display:none,如何查找该元素?

Ruby 如果页面上的css元素为display:none,如何查找该元素?,ruby,selenium,testing,rspec,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 select

我正在用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

Selenium仅以用户的方式与元素交互

如果该链接仅在移动设备中可见,我建议使用以下方法之一

  • 通过移动URL查看页面

  • 您可以使用Ruby的javascript execute将控件更新为可见,或者设置指示您正在通过移动设备查看页面的值

  • 更新控件以使其可见

    此链接讨论如何使用javascript执行将元素设置为可见:

    此链接讨论如何使用ruby的javascript执行:

    把两者放在一起,你会得到这样的结果吗

    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语法,所以我不能保证它可以复制/粘贴。

    快速搜索会发现类似的代码使用圆括号,而不是方括号。即:

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

    它在page.find上失败。给我一个错误:'Failure/error:elem=page.find[:css,“a[id='mobile-nav-link']”,visible:false]Selenium::WebDriver::error::InvalidSelectorError:无效选择器:未指定选择器'是否使用Capybara?你确定方括号是正确的吗?快速搜索会发现类似的代码使用圆括号,而不是方括号。例如,
    page.find(:css,“a[id='mobile-nav-link']”,可见:false)。单击
    谢谢!就这么简单!太好了,很高兴这有帮助!我把它作为答案贴了出来。