মাইক কোওয়ানের সরবরাহিত সমাধানটি ব্যবহারের সামগ্রিক পরীক্ষার কার্যকারিতায় প্রভাব ফেলতে পারে, যেহেতু অন্তর্নিহিত অপেক্ষারত সমস্ত ফাইন্ডিমেন্ট কলগুলিতে ব্যবহৃত হবে।
অনেক সময় আপনি চাইবেন যে কোনও উপাদান উপস্থিত না থাকলে সন্ধানী তাত্ক্ষণিকভাবে ব্যর্থ হয়ে যাবে (আপনি কোনও ত্রুটিযুক্ত পৃষ্ঠা, নিখোঁজ উপাদানগুলির জন্য পরীক্ষা করছেন))। অন্তর্নিহিত অপেক্ষার সাথে এই অপারেশনগুলি ব্যতিক্রম ছোঁড়ার আগে পুরো সময়সীমাটির মেয়াদ শেষ হওয়ার অপেক্ষা করবে wait ডিফল্ট অন্তর্নিহিত অপেক্ষা 0 সেকেন্ডে সেট করা আছে।
IWebDriver এ আমি একটি সামান্য এক্সটেনশন পদ্ধতি লিখেছি যা পদ্ধতিতে একটি সময়সীমা (সেকেন্ডে) প্যারামিটার যুক্ত করে FindElement()
। এটি বেশ স্ব-ব্যাখ্যামূলক:
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);
}
}
আমি WebDriverWait অবজেক্টটি ক্যাশে করিনি কারণ এটির নির্মাণ খুব সস্তা, এই এক্সটেনশনটি একই সাথে বিভিন্ন ওয়েবড্রাইভার অবজেক্টের জন্য ব্যবহৃত হতে পারে এবং শেষ পর্যন্ত যখন প্রয়োজন হয় তখন আমি কেবল অপ্টিমাইজেশন করি।
ব্যবহার সোজা-এগিয়ে:
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();
TimeSpan.FromSeconds(5)
। এটি আরও স্পষ্ট করে তোলে আইএমও