element.all(by.repeater ....)。get(0).clicks从量角器1.7升级到2.1

时间:2015-07-27 19:00:34

标签: javascript protractor

我们正致力于使用jasmine / protractor / selenium / chromedriver自动化测试。 最近从量角器1.7升级到2.1后,某些命令现在失败了。

HTML: 我们正在使用的页面包含directoryList中的ng-repeat项目。第一页包含设施列表,下一页包含所选设施内的服务列表。

除了命名每个列表项的实际字符串之外,directoryList的

html在两个页面上都是相同的。名称由我们的应用程序内部调用填充,该调用返回适合页面的设施或服务列表。第一页上第一个项目的链接是

<a class="directory-link"
ng-click="vm.directoryLink( item )" 
href="javascript:void(0)"> 
<span class="fa fa-angle-right directory-forward-button"></span> 
<p class="directory-entry-p">Facility 1</p> 
</a>

xpath是//*[@id="right-main-content-container"]/section/div/fang-directory-list/div/div[1]/div/div/a

我们的测试代码通过执行

来点击第一个元素
element.all( by.repeater( 'item in directoryList' ) ).get( 0 ).click();
1.7中的

单击将我们带到包含服务列表的第二页。除了显示的字符串之外,html是相同的 - 我们仍然在directoryList中使用ng-repeat项。 directoryList只包含新页面上的不同元素。我们重复上面的语句来点击第一个服务,它将我们带到另一个页面(如预期的那样)。

在2.1中,我们甚至无法在没有错误的情况下点击第一个设施:

 Failed: unknown error: Element is not clickable at point (787, 148). Other element would receive the click: `<p class="directory-entry-p">...</p>`

如果我们更改测试代码以使用xpath:

element( by.xpath( '//*[@id="right-main-content-container"]/section/div/fang-directory-list/div/div[1]/div/div/a') ).click();

我们收到警告:

WARNING - more than one element found for locator By.xpath("//*[@id=\"right-main-content-container\"]/section/div/fang-directory-list/div/div[1]/div/div/a") - the first result will be used

第1页的元素1和第2页的元素1的xpath是相同的。如果我添加console.log消息打印出设施数量,我会得到正确的答案。如果我添加一个console.log消息来打印设施中的服务数量,我会得到一个等于设施数量的数字加上2 *设施1的服务数量。这加上上面的警告让我觉得量角器是以某种方式将每个页面的目录列表连接在一起。

这感觉就像量角器中的一个可能的错误。我们不能回到1.7,因为我们需要2.1中的功能来进行测试自动化。有人在他们的代码中看到这个吗?我们尝试了很多选择而没有成功。通常的元素不可点击的建议在这种情况下不起作用,我们还没有找到解决方法。有什么建议吗?

0 个答案:

没有答案