3

Ich möchte auf die Fehlermeldung warten kommt heraus. Allerdings, wenn ich browser.driver.manage() verwenden. Timeouts(). ImplicitlyWait(), aber ich habe browser.driver.sleep verwenden()implizitWait funktioniert nicht in Webdriver Javascript

this.getErrorMessage = function() { 
    var defer = protractor.promise.defer(); 
    browser.driver.sleep(2000); //This works 
    browser.driver.manage().timeouts().implicitlyWait(2000); // This does not work 
    browser.driver.findElement(By.xpath(_error_msg_xpath)).getText().then(function (errorMsg) { 
     defer.fulfill(errorMsg); 
    }); 
    return defer.promise; 
}; 
+0

Welcher Browser (Safari, Android-Atom)? – MikeJRamsey56

Antwort

0

Von dem, was ich verstehe, benötigen Sie einen browser.wait() in diesem Fall:

this.getErrorMessage = function() { 
    var EC = protractor.ExpectedConditions; 
    var elm = element(by.xpath(_error_msg_xpath)); 

    browser.wait(EC.presenceOf(elm), 2000); 
    return elm.getText(); 
}; 

Diese für das Vorhandensein des Elements warten würde bis zu 2 Sekunden, falls ein Versprechen mit einem Text des Elements Rückkehr Das Element wird gefunden und Sie erhalten einen Timeout-Fehler, falls das Element nicht innerhalb von 2 Sekunden angezeigt wird.

0

Aktualisiert

XPath ist ein langsamere Standortstrategie Verwenden Sie eine explizite Wartezeit und möglicherweise bis zu 3 Sekunden.

var aElement 
try { 
    aElement = driver.wait(until.elementLocated(By.xpath(_error_msg_xpath)), 3000); 
    aElement.getText().then(function (errorMsg) { 
     defer.fulfill(errorMsg); 
    }); 
catch (err) { 
    message.innerHTML = "Error: " + err + "."; 
} 

Oder so etwas. Stellen Sie die Wartezeit (oben AKA 3000) so ein, wie lange Sie auf den Fehler warten möchten. Wenn das Element zuerst gefunden wird, verlassen Sie das bis.

+0

Durchsuchen [hier] (https://github.com/SeleniumHQ/selenium/blob/c10e8a955883f004452cdde18096d70738397788/javascript/webdriver/webdriver.js). – MikeJRamsey56

+0

Die Nachricht wird nur angezeigt, wenn ein Fehler aufgetreten ist. Was ich versuche zu tun ist 1. Warte auf bestimmte Zeit 2. Wenn kein Fehler angezeigt wird, dann passiere 3. Wenn es einen Fehler gibt, dann Anzeige (Versuchen Sie zu fangen, wenn Fehler auftreten, während gültigen Szenarien) – isian8814

+0

Ich aktualisierte die Antworten. – MikeJRamsey56