2

尝试单击 Capybara 元素时出现奇怪的错误

  • 我正在使用 find(:xpath,"//a[contains(text(),'Connect')]").click
  • (find(:xpath,"//a[contains(text(),'Connect')]").present?return true)

我得到的错误是:

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

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

有人有想法吗?

4

3 回答 3

1

当正在测试的页面不适合当前窗口大小时,可能会发生这种情况。如果您知道通常会发生这些错误的页面,则可以在对此类隐藏元素进行操作(如单击、清除等)之前显式向下滚动。这里是显式向下滚动页面的代码。

在java中,

JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("javascript:window.scrollBy(250,350)"); 
于 2012-12-26T05:29:46.943 回答
0

从我使用 selenium webdriver 测试 .NET 应用程序的时候开始,当问题与听起来完全一样时,我会收到该错误:它正在页面上寻找一个由于某种原因无法滚动到的对象。在我的情况下,这是因为某些对话框会出现而没有滚动条,并且驱动程序无法“将对象滚动到视图中”

你能观察你的测试的执行情况,看看是否是这样吗?我有一些运气回滚到以前的 Firefox 版本,因为 15+(截至大约 2 个月前,当我遇到问题时)不受 Web 驱动程序支持并且定期出现此问题。回滚 selenium 版本也可能有所帮助。

第一步肯定是观察测试的执行,看看发生了什么。一个好的调试想法可能是尝试自己手动完成您的步骤,以确保手动进行测试。

还值得注意的是,要让 webdriver 能够执行 click 对象实际上必须是可见的。IsPresent 不需要,它只是搜索页面文件。也是我遇到的一个问题。IsPresent 仍会为页面上不可见且不可见的对象返回 true(即您当时看不到的页面底部的内容)

于 2012-11-06T20:02:04.573 回答
0

这里有几个提示:

  1. 理想情况下,Webdriver 应该是最新的更新,这是最常用的(除非你正在做 Ruby 自动化)

  2. 使用 css 选择器、xpath(在渲染时)几乎总是在资源和代码上都比较重。

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

于 2016-09-19T09:18:05.460 回答