这个问题与question
中给出的解决方案密切相关在我的测试脚本中,我需要进入登录脚本并注销,以防浏览器自动在应用程序中登录。因此,按照问题How to create a condition in protractor for when an element exists or not中提供的解决方案,我创建了以下脚本:
beforeEach(function () {
browser.driver.manage().window().maximize();
browser.get(globalVariables.loginMain);
globalVariables.User_Menu_Dropdown.isDisplayed().then(function(Login_Menu) {
if (Login_Menu) {
globalVariables.User_Menu_Dropdown.click();
browser.wait(globalVariables.until.presenceOf(globalVariables.logOut_Button), 3000, 'The Logout menu too long to appear in the DOM');
globalVariables.logOut_Button.click();
browser.wait(globalVariables.until.presenceOf(globalVariables.Email_Input_box), 3000, 'The User Input box too long to appear in the DOM');
} else {
console.log("the app is on the login page")//do nothing
}
});
但是当我运行脚本时,仍然出现以下错误
"Failed: No element found using locator: By(css selector, img[class="img-thumb-xs mr-1 align-middle"])".
我在做什么错?实现它的最佳方法是什么?
答案 0 :(得分:1)
您可以根据情况使用 ExpectedConditions 。
var EC = protractor.ExpectedConditions;
// Waits for the element with id 'abc' to be no longer visible on the dom.
browser.wait(EC.invisibilityOf($('#abc')), 5000);
或者您可以使用 not 条件,这将导致相同的结果
var EC = protractor.ExpectedConditions;
// Waits for the element with id 'abc' to be no longer visible on the dom.
browser.wait(EC.not(EC.visibilityOf($('#abc'))), 5000);