【问题标题】:element.all always returning count as 0element.all 总是返回计数为 0
【发布时间】:2018-07-25 03:07:51
【问题描述】:

我正在尝试使用量角器测试动态 Web 表格并尝试查找标题、行和列的计数,但计数始终为 0 var x = element.all(by.xpath('//table//thead//tr//th'))

x.count().then(函数(c){

console.log(c);

});

我也尝试使用 element.all(by.css ) 并且返回相同,有人可以帮忙吗? 我使用 selenium 并且能够检索值,所以 xpath 没有错,但我必须使用量角器来获取相同的值。 正在运行的硒脚本 List col = driver.findElements(By.xpath("//div[@class='table-wrapper']//table//thead//tr/th")); System.out.println(col.size());

html

【问题讨论】:

  • 如果你知道至少会有一个,你需要 browser.wait 等待 x.first() 的出现。否则它计算得太早了。或者你可以增加睡眠,但这太恶心了。或者使用 async 和 x = await element.all... console.log (await x.count)

标签: protractor


【解决方案1】:

试试下面的代码

var x = await element.all(by.css('table[title="status"]'))
//Add wait if the table take more time to load
x.count().then(function(c){
console.log(c);
});

【讨论】:

  • 感谢第一个工作 await 没有,下一步我的场景是自动化动态表...该表始终有 3 列,但行数不同。(年龄范围取决于选择)必须将对应于 Admitted 和 Discharged 状态的每个年龄范围的值与后端进行比较(我必须将 web 元素与查询的 o/p 进行比较,以查看是否在 ui 上一切正常)。挑战是我将如何确定要调用哪个查询,因为这是动态的。假设只有 18-40 岁的人将是我的单元格(0),所以单元格(1)和单元格(2)应该匹配来自的查询分贝...
【解决方案2】:

一般来说,您应该避免使用xpath,因为它的效率非常低。

这应该适合你:

var table = element(by.css('table.table'));

table
 .element(by.css('thead'))
 .all(by.css('tr th'))
 .count()
 .then(function(count) {
   console.log('count:',count);
 });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-24
    • 2021-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多