![](/img/trans.png)
[英]isDisplayed returns false for a visible element in Protractor
[英]AngularJS & Protractor - Perform .click() while an element .isDisplayed()
我想在我的AngularJS應用中測試“顯示更多”按鈕,因此,當用戶單擊按鈕時,它將加載一些內容,沒有更多可顯示按鈕隱藏的地方。
顯示“顯示更多”時如何執行.click()
。 我不想對循環數進行硬編碼,但是以某種方式將.isDisplayed()
(即使它返回了一個承諾)插入while()
2種方法來做恕我直言,
由於.click實際上是在創建諾言,因此您不能同時循環它-它只會創建一堆相同的諾言。 我為此創建了一個遞歸函數:
reclick = function(elementos) {
if (elementos.isDisplayed()) {
elementos.click().then(function () {
console.log('click');
//YOUR CHECKS AFTER CLICK HERE
return reclick(elementos);
});
}
};
reclick(anyElement);
您可以使它與其他函數一起可重用,作為單擊后要執行的代碼的參數...
it('should have something after click')
包裝到while()循環中,這樣您就不必處理promises(但這取決於afterEach()和beforeEach()中的內容。 。 我會發現所有“ Show More
按鈕和過濾器僅使用filter()
可見 。 執行:
// find all "Show More" links by link text and filter only visible
var showMores = element.all(by.linkText("Show More")).filter(function (link) {
return link.isDisplayed().then(function (value) {
return value;
});
});
// for each visible "Show More", click it
showMores.each(function (link) {
link.click();
// TODO: assertions/expectations
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.