[英]Mocha/Chai - Test to click an element only if it's present, displayed or exists
我剛剛開始考慮使用Mocha / Chai框架使用Selenium進行測試,並且正在嘗試使用登錄功能。 我想檢查一個項目是否存在/顯示並單擊它。
目前,我的測試正在等待頁面加載,並且我想要類似以下的內容,但目前不起作用:
var elementOnPage = driver.findElement(By.('elementId')).isDisplayed(); //var elementOnPage = driver.findElement(By.('elementId')).exist; if(elementOnPage == true){ driver.findElement(By.('elementId')).click(); } else{ driver.findElement(By.('anotherElement')).click(); }
我也嘗試了上面的注釋行,但似乎都行不通。 在繼續之前,代碼似乎總是會碰到if語句的第二部分。 如果存在我要檢查的元素,則測試將執行下一行,但如果不存在,則測試將失敗,並顯示“ NoSuchElementError:No such element”。
我也沒有意識到我可以使用諸如exist(),isPresent()或isElementPresent()之類的東西。
有沒有人有任何想法或向我指出正確的方向? 我對此很陌生。
干杯
isDisplayed
的返回值是一個承諾,但是您將其視為布爾值。
您需要執行以下操作:
driver.findElement(By.id('elementId')).isDisplayed().then(function (displayed) {
if (displayed) {
driver.findElement(By.id('elementId')).click();
}
else{
driver.findElement(By.id('anotherElement')).click();
}
});
或更簡而言之:
driver.findElement(By.id('elementId')).isDisplayed().then(function (displayed) {
driver.findElement(By.id(displayed ? 'elementId' : 'anotherElement')).click();
});
順便說一句By.('elementId')
無法正常工作。 我假設您是說By.id('elementId')
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.