我们目前在gwt动力gui中的硒测试中存在一个很好的问题。
该应用程序包含两个部分(过滤器和网格)。我们的测试有时会因NoSuchElementException而失败。
Crazy如下:我使用断点在eclipse中停止测试,并使用firefox firebug或任何其他插件检查页面。好吧 - 我找不到想要的元素。但是(没有重新启动应用程序或eclipse中的任何其他更改),如果我再次尝试并搜索元素它在那里和eclipse中的简历,测试变为绿色。对我来说,这似乎是firefox中的同步问题。
明确等待命令
new WebDriverWait(getDriver(), 10).until(condition);
唯一的影响是超时(10秒)发生。
正如我所说 - 有时测试是绿色的,有时会失败。
有人有想法吗?
答案 0 :(得分:0)
听起来像从服务器加载一些异步数据(RPC)?当Selenium正在寻找时,数据以及因此在UI中呈现数据的元素还没有出现。根据查询对数据库的占用时间或网络上的延迟,等待时间可能因测试运行而异。
答案 1 :(得分:0)
我有解决此问题的方法,并会分享这个。 在显式wait命令运行之前执行以下代码。
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处于“同步”状态。所以我递减宽度,然后将其设置回旧值。
如果有人有更好的建议 - 请告诉我们; - )