[英]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.