我正在使用Site_Prism/Capybara
进行自动化UI testing
。由于找不到任何Capybara滚动网页的方法,我正在执行jscript
,它为我完成那项工作。 这两条线为我做了一个体面的工作:
page.execute_script ("document.getElementsByTagName('h4')[4].scrollIntoView();")
和
page.execute_script ($("h5:contains(' Information')")[0].scrollIntoView();)
但我想做出更强大的搜索将只包括我想要滚动到文本。为此,我想在jscript中使用Xpath。
这条线在Chrome控制台正常工作:
$x("//*[contains(text(), ' Information')]")[0].scrollIntoView();
但是,当我尝试在水豚执行它,因为我执行其他jscripts,像这样:
page.execute_script ("$x(\"//*[contains(text(), '4. Conditions')]\")[0].scrollIntoView();")
我总是得到错误:
unknown error: $x is not defined (Session info: chrome=42.0.2311.135) (Driver info: chromedriver=2.14.313457 (3d645c400edf2e2c500566c9aa096063e707c9cf),platform=Linux 3.13.0-37-generic x86_64) (Selenium::WebDriver::Error::UnknownError)
这里有什么问题? 我不能在Capybara执行的jscript中使用Xpaths吗?
任何人都可以帮忙吗?
在此先感谢!
你在哪里定义'$ x'? –
您是否意识到'$ x'是Chrome添加到开发控制台的东西,它不是JavaScript的一部分? – epascarello
谢谢!我不知道$ x是添加到开发控制台的东西,它不是JavaScript的一部分。你有什么建议如何解决这个问题? JavaScript中包含的其他任何方式?顺便说一句,我已经在Chrome中执行了这个脚本,也就是我现在使用Chrome进行测试,但是我也想在其他浏览器上运行这些测试,所以答案非常有用。 –