我有一张桌子,我有一些链接。由于此表非常动态,我想搜索链接。
@RequestScoped
public class C1 {
...
}
@SessionScoped
public class C2 {
@Inject
private Provider<C1> provider;
...
public void doSomething() {
// Get the instance corresponding to the current request
C1 c1 = provider.get();
...
}
}
如果在当前页面上找不到,我想点击Next 30 records按钮获取下30条记录。
this.invoiceTable.element(by.cssContainingText('a','1616050'));
再次开始在下一页上搜索上一个链接。 我不知道如何实现这一点以及我应该为未找到的元素记录什么错误,以便它单击Next 30链接并再次开始搜索。
有人可以帮助正确的方法记录表中未找到的元素的错误,然后单击下一步按钮,然后再次搜索?
尝试使用下面的代码但是在调用test()
时抛出错误this.invoiceTable.element(by.cssContainingText('a','Next 30')).click();
答案 0 :(得分:2)
你可以递归地应用isElementPresent()
检查 ,这些内容如下:
function test() {
this.invoiceTable.isElementPresent(by.cssContainingText('a','1616050')).then(function(isPresent) {
if (!isPresent) {
this.invoiceTable.element(by.cssContainingText('a','Next 30')).click();
test();
}
});
}
答案 1 :(得分:1)
alecxe推荐的新用法解决了我的问题。
test() {
var invoicetable1 = element(by.css('[id$="MainContent_uxInvoiceList"]'));
**var self = this;**
browser.isElementPresent(by.cssContainingText('a','1626547')).then(function(isPresent) {
if (isPresent) {
invoicetable1.element(by.cssContainingText('a','1626547')).click();
} else {
invoicetable1.element(by.cssContainingText('a','Next 30 Invoices')).click();
**self.test();**
}
});
}