我有3个标签,我需要测试它们是否被点击,但我似乎找不到一个好的预期条件来使用。现在我正在使用浏览器。睡眠时间更长,因为加载标签需要几秒钟的时间。
选项卡:

代码:
let locator = {
upcomingTabButton : element(by.css('div.toolbar-content.toolbar-content-md ion-segment ion-segment-button:nth-child(1)')),
pendingTabButton : element(by.css('div.toolbar-content.toolbar-content-md ion-segment ion-segment-button:nth-child(2)')),
completedTabButton : element(by.css('div.toolbar-content.toolbar-content-md ion-segment ion-segment-button:nth-child(3)')),
activeTab : element(by.css('ion-segment ion-segment-button.segment-button.segment-activated')),
upcomingActiveTab: element(by.cssContainingText('ion-segment ion-segment-button.segment-button.segment-activated', 'UPCOMING')),
};
describe('When x tab button is pressed, ', function () {
it('if x = PENDING tab, then it should be activated', () => {
browser.sleep(1000);
browser.wait(EC.elementToBeClickable(locator.pendingTabButton),5000);
locator.pendingTabButton.click();
browser.sleep(10000);
expect(element(by.css('ion-segment ion-segment-button.segment-button.segment-activated')).getText()).toEqual('PENDING');
});
it('if x = UPCOMING tab, then it should be activated', () => {
browser.wait(EC.elementToBeClickable(locator.upcomingTabButton),5000);
locator.upcomingTabButton.click();
//browser.wait(EC.presenceOf(locator.upcomingActiveTab),5000);
browser.sleep(10000);
expect(element(by.css('ion-segment ion-segment-button.segment-button.segment-activated')).getText()).toEqual('UPCOMING');
});
it('if x = COMPLETED tab, then it should be activated', () => {
browser.wait(EC.elementToBeClickable(locator.completedTabButton),5000);
locator.completedTabButton.click();
//browser.wait(EC.presenceOf(locator.activeTab),5000);
browser.sleep(10000);
expect(element(by.css('ion-segment ion-segment-button.segment-button.segment-activated')).getText()).toEqual('COMPLETED');
});
});我尝试了一些预期的条件,但都不起作用,因为我需要查看选项卡何时被选中,并且我没有发现任何类似的exp条件。
我使用的是browser.sleep(10000) 10秒,但这不是一个好的使用方式。
有人能帮我吗?
选项卡内容大约需要5/6秒才能加载
发布于 2020-07-06 20:03:03
/**
* wait until some element is present
*
*/
this.waitElement = function(ElmFinder){
var i = 0;
var _retryOnErr = function(err) {
console.log(' <<< warning: wait retrying iteration: ' + i + ' >>> ');
browser.sleep(500);
return false;
};
browser.wait(function() {
i++;
return ElmFinder.isDisplayed().then(function(present) {
if (present) {
return true;
} else {
console.log("element is not present");
return _retryOnErr();
}
}, _retryOnErr);
}, 120*1000, 'Error waiting for element present: ').
then(function(waitRetValue) {
return waitRetValue; // usually just `true`
}, function(err) {
throw err + ' after ' + i + ' iterations.';
});
};https://stackoverflow.com/questions/62755364
复制相似问题