1

我们目前在 gwt 驱动的 gui 中的 selenium 测试有一个很好的问题。

该应用程序包含两个部分(过滤器和网格)。我们的测试有时会因 NoSuchElementException 而失败。

疯狂的是:我在 eclipse 中用断点停止测试,并用 firefox firebug 或任何其他插件检查页面。好吧 - 我找不到所需的元素。但是(没有重新启动应用程序或 eclipse 中的任何其他更改),如果我再次尝试并搜索它存在的元素并在 eclipse 中恢复,则测试变为绿色。对我来说,这似乎是 Firefox 中的同步问题。

显式等待命令

new WebDriverWait(getDriver(), 10).until(condition);

唯一的效果是发生超时(10 秒)。

正如我所说 - 有时测试是绿色的,有时它会失败。

有人有想法吗?

4

2 回答 2

0

我有一个解决这个问题的方法,并会分享这个。以下代码在显式等待命令运行之前执行。

Window window = getDriver().manage().window();
Dimension dimension = window.getSize();
Dimension tmp = new Dimension(dimension.getWidth() - 1, dimension.getHeight());
window.setSize(tmp);
window.setSize(dimension);

我发现,在调整浏览器窗口大小后,DOM 处于“同步”状态。所以我减小宽度,然后将其设置回旧值。

如果有人有更好的建议 - 让我们知道 ;-)

于 2013-10-17T15:54:36.727 回答
0

听起来您从服务器加载了一些异步数据(RPC)?当 Selenium 正在寻找数据时,数据以及在 UI 中呈现数据的元素还不存在。根据您的查询在数据库上花费的时间或您在网络上的延迟时间,等待时间可能因测试运行而异。

于 2013-10-17T14:01:06.057 回答