2016-03-22 4 views
0

Gibt es eine Möglichkeit, die Verwendung von driver.wait or driver.sleep Befehlen zu vermeiden?Gibt es eine Möglichkeit, die Verwendung von Warten und Schlafen in Selen zu vermeiden?

Etwas wie driver.manage().timeouts().implicitlyWait(3000) als allgemeine Timeout verwendet werden, bis das Element befindet?

Ich bin neu in Prüfautomaten und Codierung :)

+0

Hat meine Antwort geholfen? –

+1

Ich habe es geschafft, einen "Umweg" mit der Methode zu machen, um in einer allgemeinen Spezifikation verwendet zu werden, aber Ihre Antwort half definitiv, danke. – MirceaM

Antwort

2

Sie können explizite und implizite wartet in Selenium Set-up.

Ein Beispiel eines expliziten warten also explizit warten für ein bestimmtes Element erscheinen:

IWebDriver driver = new FirefoxDriver(); 
driver.Url = "http://somedomain/url_that_delays_loading"; 
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10)); 
IWebElement myDynamicElement = wait.Until<IWebElement>((d) => 
{ 
    return d.FindElement(By.Id("someDynamicElement")); 
}); 

Ein Beispiel eines impliziten wait (dh, eine beliebige Menge an Zeit warten) ist:

WebDriver driver = new FirefoxDriver(); 
driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10)); 
driver.Url = "http://somedomain/url_that_delays_loading"; 
IWebElement myDynamicElement = driver.FindElement(By.Id("someDynamicElement")); 

Weitere Informationen finden Sie unter here.

0

können Sie explizite wait

new WebDriverWait(driver, new TimeSpan(0, 1, 0)).Until(ExpectedConditions.ElementIsVisible(By locator)); 

Waits für das Element für eine Minute nutzen.

0

Vielen Dank für die Antworten. Ich schaffte es einen „Umweg“ die folgenden zu machen:

function findClickElem(locator, path, timeout) { 

      driver.wait(generalspecs.getSpecs().until.elementLocated(generalspecs.getSpecs().By[locator](path)), timeout).then(function(elem){ 
       if(elem){ 
        elem.click(); 
       }else{ 
        console.log('no element!'); 
       } 
      }); 
     } 

einfach den generalspecs hinzugefügt und wird jedes Mal, wenn ich verwende, um eine Wartezeit genannt und klickt auf das Element.

findClickElem("xpath" ,"//li[contains(@class, 'classCustom1')]", 15000); 
Verwandte Themen