我正在为网站创建一套测试(使用Geb / Spock)。在其中之一中,我要访问的元素位于页面顶部,因此,为确保可见,我想滚动到页面顶部。
我正在使用的命令是:
browser.js.exec('window.scrollTo(0,0);')
或类似的变体
js.exec('window.scrollTo(0,0);')
或其他替代方法,例如:
js.exec('window.scrollBy(0,-250);')
它们都不会使页面向上滚动,并且在执行时出现以下错误(这是唯一的错误,没有其他反馈)。使用上面列出的其他选项的错误消息是相同的(命令本身除外):
Condition not satisfied:
browser.js.exec('window.scrollTo(0, 0);')
| | |
| | null
| geb.js.JavascriptInterface@4019094f
geb.Browser@3dcac33e
at UserCreatesCompany.Go to Home Page and click on the log to
GitHub button as user User1(UserCreatesCompany.groovy:170)
我无法解释“ exec”为空的消息。到底是什么意思? 为了使事情变得更有趣,在此脚本的结尾,我正在运行以下清理过程
js.exec('window.scrollTo(0, document.body.scrollHeight);')
DeleteButton.click()
$("button",'data-automation-id':"button-modal-yes").click()
}
,并且效果很好:页面向下滚动。因此,似乎缺少一些缺少的库的问题。 关于我可能做错了什么的建议?
我正在使用的不同组件的版本是:
groovyVersion = '2.5.4'
gebVersion = '2.3'
seleniumVersion = '3.141.59'
chromeDriverVersion = '2.45'
答案 0 :(得分:0)
首先,您无需手动滚动页面即可显示元素-支撑Geb的Selenium WebDriver将在您开始与内容进行交互(单击,设置值等)后自动为您完成此操作
第二,您遇到的失败是来自自动断言(expect:
或{{1}})Spock块中的语句的断言。在我看来,您不了解Spock的核心概念,因此应首先阅读about it in the manual。它应该使您变得更加清晰。
答案 1 :(得分:0)
感谢您的回答。显然:我并不完全了解不同块对可执行文件施加的约束。一旦迷路了,手册就很清楚了!
我对您的第一个断言很感兴趣,他指出Selenium WebDriver一旦与该元素交互将立即移动到该元素。那是我的理解,但是没有用。我确保所讨论的元素具有唯一标识符,但是,如果必须通过向上滚动找到该元素,则无法找到它。另一方面,当找到元素WebDriver向下滚动页面时,它可以正常工作。
再次感谢您的解释。我今天学到了一些新东西!