我在尝试点击Capybara元素时遇到了一个奇怪的错误
我得到的错误是:
Selenium :: WebDriver :: Error :: MoveTargetOutOfBoundsError异常:元素无法滚动到视图中:javascript:void(0);
我做了一些研究,我找到的唯一解决方案是将selenium版本设置为2.16可以解决这个问题(我使用的是2.25)。
有人有个主意吗?
答案 0 :(得分:1)
当正在测试的页面不适合当前窗口大小时,可能会发生这种情况。如果你知道这些错误发生的页面,你可以在对这些隐藏元素(如点击,清除等)进行操作之前明确向下滚动。这里是明确向下滚动页面的代码。
在java中,
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("javascript:window.scrollBy(250,350)");
答案 1 :(得分:0)
从我使用selenium webdriver测试.NET应用程序的时代开始,当问题出现时,我会得到错误:它正在页面上寻找一个因某些原因无法滚动的对象。在我的情况下,这是因为一些对话框会出现没有滚动条,驱动程序无法“将对象滚动到视图中”
你能看一下测试的执行情况,看看是否属实?我有一些运气回滚到以前版本的Firefox,因为15+是(大约2个月前,当我遇到问题时)不受网络驱动程序支持并且定期出现此问题。回滚硒版本也可能有所帮助。
虽然第一步肯定是观察测试的执行,但看看发生了什么。一个好的调试想法可能是尝试自己手动完成你的步骤,以确保测试工作。
还值得注意的是,对于能够执行的webdriver,实际上必须可见对象。 IsPresent并不要求它只搜索页面文件。也是我遇到的一个问题。 IsPresent对于页面上没有和不能显示的对象仍然会返回true(即当时您无法看到的页面底部的内容)
答案 2 :(得分:0)
这里有几点提示:
理想情况下,Webdriver应该是最新的更新,这是最常用的(除非您正在使用Ruby Automation)
使用css选择器,xpath(虽然呈现),在资源和代码上几乎总是更重。
尝试防御性编码,首先确定它存在。根据您使用的包,有很多方法可以做到这一点。在红宝石中,您可以page.has_css?('css_string')