我需要将表中记录数的值存储在一些变量中,以便稍后使用它。现在尝试简单地打印记录的数量,像这样:
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
变量不是一个量角器element
对象来执行getText()
。你必须得到承诺,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()
的值,那么使用jasmine将expect
的值大于0。-
expect(element.all(by.xpath('//*[@id="content"]/div/div/table/tbody/tr')).count()).toBeGreaterThan(0);
element.all()
等待隐式等待时间以获得DOM中存在的元素。一旦隐式等待超时,它就返回它找到的元素。如果没有找到任何具有定位符的元素,则返回0。
希望能有所帮助。