我在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
答案 0 :(得分:0)
Selenium只与用户的方式相互作用。
如果链接仅在移动设备中可见,我建议使用以下其中一种。
通过移动网址查看该页面。
您可能可以使用Ruby的javascript执行来更新控件以使其可见,或者设置指示您通过移动设备查看页面的值
更新控件以显示
此链接讨论了如何使用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