[英]Protractor - count elements in xpath and store it to var
我需要将表中记录数的值存储在某个变量中,以便最近使用它。 现在尝试简单打印这样的记录数:
var rows = element.all(by.xpath('//*[@id="content"]/div/div/table/tbody/tr'));
var sum = rows.count();
console.log(sum.getText());
或者像那样:
element.all(by.xpath('//*[@id="content"]/div/div/table/tbody/tr')).count().then(function(count) { console.log(count); });
但每次我Failed: object is not a function
。 任何人都可以帮忙吗?
从这个线程尝试的解决方案: 量角器 - 计数转发器中的元素并打印它 - 但没有工作。
我想做与Java代码类似的场景:
@Test
public void test() throws Exception {
When:
clickOn(welcomePage.usersButton);
clickOn(usersPage.archivedTab);
int numberOfRecords = getDriver().findElements(By.xpath("//*[@id=\"content\"]/div/div/table/tbody/tr")).size();
if (numberOfRecords > 0) { do test, test steps ar here } else {break test}
首先,你的sum
变量不是一个对它执行getText()
的量角器element
对象。 你必须得到count()
函数返回的承诺,将它存储在sum变量中。 这是如何做 -
var rows = element.all(by.xpath('//*[@id="content"]/div/div/table/tbody/tr'));
rows.count().then(function(count){
var sum = count;
console.log(sum);
});
如果你想断言你的count()
元素的值,那么expect
它使用jasmine大于0。 这是如何做 -
expect(element.all(by.xpath('//*[@id="content"]/div/div/table/tbody/tr')).count()).toBeGreaterThan(0);
element.all()
等待隐式等待时间以获取DOM中存在的元素。 一旦隐式等待超时,它就会返回它找到的元素。 如果找不到任何带定位符的元素,则返回零。
希望能帮助到你。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.