2016-03-22 17 views
0

driver.wait or driver.sleep komutlarını kullanmamanın bir yolu var mı?Selenyumda bekleme ve uyku kullanmaktan kaçınmanın bir yolu var mı?

Öğe bulunana kadar genel zaman aşımı olarak kullanılacak driver.manage().timeouts().implicitlyWait(3000) gibi bir şey var mı?

ben otomatik test yeni ve Selenyumun içinde :)

+0

Cevabım yardım ettiniz mi? –

+1

Genel özelliklerde kullanılacak yöntemle bir "sapma" oluşturmayı başardım, ancak cevabınız kesinlikle yardımcı oldu, teşekkürler. – MirceaM

cevap

2

Sen set-up açık ve kapalı bekler kodlama duyuyorum. Bir eleman görünmesi için

açık bir örneği açıkça bekleyin yani bekleme:

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")); 
}); 

örtülü bir bekleme bir örneği (yani, bir zaman rasgele kadar bekler) aşağıdaki gibidir:

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")); 

Daha fazla bilgi için here adresine bakın.

0

Sen elemanı için bir dakika açık bekleyin

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

Waits kullanabilirsiniz.

0

Cevaplar için çok teşekkür ederim.

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!'); 
       } 
      }); 
     } 

Sadece generalspecs eklenmiş ve ben bir bekleme kullanmak ve eleman her tıkladığında çağrılan: Aşağıdaki sahip bir "dolambaçlı yoldan" yapmayı başardı.

findClickElem("xpath" ,"//li[contains(@class, 'classCustom1')]", 15000); 
İlgili konular