Webdriver: selenyum c# Elemanı Günümüze Kadar Bekleyin
Bir öğe webdriver şeyler yapmaya başlamadan önce mevcut olduğundan emin olmak istiyorum.
Bu iş için böyle bir şey almaya çalışıyorum:
WebDriverWait wait = new WebDriverWait(driver, new TimeSpan(0,0,5));
wait.Until(By.Id("login"));
Başta ne kadar anynomous işlevi.. kurulum için mücadele ediyorum
CEVAP
Çözüm Mike Kwan tarafından sağlanan kullanarak örtülü bekle FindElement aramalar kullanılacaktır beri genel test performansı üzerinde bir etkisi olabilir. Birçok kez FindElement bir unsur mevcut (bozuk sayfa, eksik elementler, vs. için deniyorsun.) olduğunda hemen başarısız. Örtülü bekle ile bu işlemleri hariç atmadan önce tüm zaman aşımı süresinin dolmasını bekle. Varsayılan örtülü bekle 0 saniye olarak ayarlanır.
Bu FindElement (saniye olarak) zaman aşımı parametre ekler İWebDriver için küçük bir uzantısı yöntemi yazdım() yöntemi. Oldukça kendi kendini açıklayıcı
public static class WebDriverExtensions
{
public static IWebElement FindElement(this IWebDriver driver, By by, int timeoutInSeconds)
{
if (timeoutInSeconds > 0)
{
var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutInSeconds));
return wait.Until(drv => drv.FindElement(by));
}
return driver.FindElement(by);
}
}
Kuruluşundan çok ucuz olduğu için WebDriverWait nesne önbellek bilmiyordum, bu uzantı aynı anda farklı WebDriver nesneler için kullanılabilir, ve ben sonunda gerekli iyileştirmeleri yapmak.
Kullanım düz ileri
var driver = new FirefoxDriver();
driver.Navigate().GoToUrl("http://localhost/mypage");
var btn = driver.FindElement(By.CssSelector("#login_button"));
btn.Click();
var employeeLabel = driver.FindElement(By.CssSelector("#VCC_VSL"), 10);
Assert.AreEqual("Employee", employeeLabel.Text);
driver.Close();
Nasıl WebDriver Selenyum (Selenyum 2) ...
Gelecek< herhangi kadar bekleyin;T&g...
Nasıl Selenyum-WebDriver Java birkaç s...
Çalışan webdriver Selenyum ile krom...
Selenyum WebDriver - eğer eleman varsa...