2016-11-01 2 views
5

ich eine Login-Funktion haben, die ich für einen Winkelmesser-Test, es sieht aus wie diese:Wie warte ich, bis ein Element mit Winkelmesser sichtbar ist, wenn Winkel nicht verfügbar ist?

var config = require("../helpers/config.js"); 

var login = function() { 
    browser.driver.get(config.dsp.url); 
    browser.driver.findElement(by.name("userName")).sendKeys(config.dsp.user); 
    browser.driver.findElement(by.name("password")).sendKeys(config.dsp.password); 
    return browser.driver.findElement(by.name("submit")).click().then(function() { 
     return browser.driver.wait(function() { 
      return browser.driver.isElementPresent(browser.driver.findElement(by.className("sample-class-name"))); 
     }, 360000); 
    }); 
} 

module.exports = login; 

Ich kann keine der Transporteur spezifischen Haken verwenden, da Angular nicht auf dieser Seite verwendet wird, so Ich muss die zugrunde liegende Webdriver-API verwenden. Das Problem ist, ich kann nicht herausfinden, wie man wartet, bis ein Element sichtbar ist, das dieses eingewickelte webdriver-Objekt verwendet. Jede Hilfe wäre willkommen.

+0

Die Störung, die ich erhalte, wenn ich diesen Test auszuführen ist Typeerror: „Invalid Locator“ für browser.driver.isElementPresent. –

+1

Wenn Angular nicht vorhanden ist, deaktivieren Sie einfach die Synchronisierung mit 'browser.ignoreSynchronization = true;'? –

+0

Gute Frage. Angular wird vorhanden sein, sobald die Anmeldung abgeschlossen ist. Ich muss nur den Benutzer über die nicht-eckige Login-Seite bringen. –

Antwort

5

Versuchen mit den erwarteten Bedingungen der zugrunde liegenden Treiber:

var config = require("../helpers/config.js"); 
var until = require('selenium-webdriver').until; 

var login = function() { 
    var driver = browser.driver; 

    driver.get(config.dsp.url); 
    driver.findElement(by.name("userName")).sendKeys(config.dsp.user); 
    driver.findElement(by.name("password")).sendKeys(config.dsp.password); 
    driver.findElement(by.name("submit")).click(); 

    return driver.wait(until.elementLocated(by.css(".sample-class-name")), 10000) 
     .then(e => driver.wait(until.elementIsVisible(e)), 10000); 
} 

module.exports = login; 
+0

Danke. Das ist, was ich gesucht habe. –

+0

Danke, das selbe für mich! – afaraut

Verwandte Themen