gpt4 book ai didi

javascript - 在 Protractor 中选择多个链接

转载 作者:行者123 更新时间:2023-11-27 23:12:15 25 4
gpt4 key购买 nike

我想知道当您不知道链接的数量时,是否有一种方法可以在 Protractor 中选择多个链接。目前我有一个表,其中包含多个(数量未知)链接,我必须选择这些链接(单击并移动页面),然后为我正在编写的测试执行一系列过程:

<table border="0" class="bodyTable">
<tbody><tr class="a">
<th>Name</th>
<th>Description</th></tr>
<tr class="b">
<td><a href="Link3">Link1</a></td>
<td>-</td></tr>
<tr class="a">
<td><a href="Link3">Link2</a></td>
<td>-</td></tr>
<tr class="b">
<td><a href="Link3">Link3</a></td>
<td>-</td></tr>
<tr class="a">
<td><a href="Link4">Link4</a></td>
<td>-</td></tr>
</tbody>

问题是(我异步使用 Protractor,因为这是一个非 Angular 应用程序),由于链接后面的页面大部分是相同的,如何选择未知列表中的每个元素而不重新编写代码量惊人。

我以前的方法是围绕计算表中的 tr 并启动一系列循环,但这很笨拙,而且只是糟糕的代码:

//something like this
elements(by.tagName('tr')).count().then(function(numberOfTRs) {
for(int i = 1; i <= numberOfTRs; i++)
elements(by.tagName('tr')).get(i);
});

但是,页面加载后, promise 会继续,当然会产生错误。应该有一种方法可以等待(不使用 browser.sleep(...)),但是我不确定该怎么做。通常我会研究这个问题,但我什至不知道要搜索什么(我猜“白痴以不同于设计的方式使用 Protractor ”会出现很多)。

提前致谢...

编者注:

理想的函数应该以这种方式工作

element(whatever).all(listsoflinks).someFunction(function (elementToUse, index) {
//...do stuff....
//....return to page....
});

我能找到的最接近的东西是“Each”函数,但它因错误而崩溃:

Failed: Element not found in the cache - perhaps the page has changed since it was looked up
For documentation on this error, please visit: http://seleniumhq.org/exceptions/stale_element_reference.html
Build info: version: '2.48.2', revision: '41bccdd', time: '2015-10-09 19:59:12'
System info: host: 'BAHCND4397GQF', ip: '10.138.1.15', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_72'
Driver info: driver.version: unknown

So, obviously the function is "loosing" its footing when the page change happens

我在“each”函数中放置了一个计数器(console.log),当然,它会飞过,就好像它不是 promise 的一部分一样......

最佳答案

如何将链接收集到一个数组中,循环遍历该数组并导航到每个 URL:

$$("table.bodyTable tr td a").getAttribute("href").then(function(links) {
for(int i = 0; i <= links.length; i++) {
browser.get(links[i]);
// do smth
}
});

关于javascript - 在 Protractor 中选择多个链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36091895/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com