Selenium Web驱动程序错误

时间:2012-11-06 19:56:25

标签: ruby-on-rails selenium capybara selenium-webdriver

我在尝试点击Capybara元素时遇到了一个奇怪的错误

  • 我正在使用find(:xpath,“// a [contains(text(),'Connect')]”)。点击
  • (find(:xpath,“// a [contains(text(),'Connect')]”)。present?return true)

我得到的错误是:

Selenium :: WebDriver :: Error :: MoveTargetOutOfBoundsError异常:元素无法滚动到视图中:javascript:void(0);

我做了一些研究,我找到的唯一解决方案是将selenium版本设置为2.16可以解决这个问题(我使用的是2.25)。

有人有个主意吗?

3 个答案:

答案 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)

这里有几点提示:

  1. 理想情况下,Webdriver应该是最新的更新,这是最常用的(除非您正在使用Ruby Automation)

  2. 使用css选择器,xpath(虽然呈现),在资源和代码上几乎总是更重。

  3. 尝试防御性编码,首先确定它存在。根据您使用的包,有很多方法可以做到这一点。在红宝石中,您可以page.has_css?('css_string')

相关问题