मैं सेलेनियम 2 परीक्षण (सी # में लिखा गया) का उपयोग कर रहा हूं जो "चयन" नियंत्रण से मूल्य चुनते हैं। चयन सर्वर पर पोस्ट-बैक का कारण बनता है, जो पृष्ठ की स्थिति को अद्यतन करता है। इसलिए पेज बदलने के लिए प्रतीक्षा करने के लिए मूल्य चुनने के बाद मैं मैन्युअल प्रतीक्षा (thread.sleep
) कर रहा हूं। और यह थ्रेड के साथ ठीक काम करता है। सो जाओ। हालांकि, Thread.Sleep
एक बुरा विचार अच्छे कारणों इसलिए जब मैं अपने सभी Thread.Sleep
कोड की लाइन बाहर ले की संख्या के साथ उपयोग करने के लिए है तो सभी अपने परीक्षण मामलों अलग गिर और मैं WebDriverWait की कोशिश की है, उलझाव से और स्पष्ट कोई भी काम करता है और बहुत निराशाWebDriverWait या ImplicitlyWait या ExplictlyWait कुछ भी काम नहीं करता
नीचे नमूना कोड है कि मैं कोशिश की है ....
है // WebDriverWait
public IWebElement WaitForElement(By by)
{
// Tell webdriver to wait
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30));
wait.PollingInterval = TimeSpan.FromSeconds(2);
wait.IgnoreExceptionTypes(typeof(NoSuchElementException), typeof(NoSuchFrameException));
wait.IgnoreExceptionTypes(typeof(StaleElementReferenceException), typeof(StaleElementReferenceException));
IWebElement myWait = wait.Until(x => x.FindElement(by));
return myWait;
}
यह भी कोशिश की:
WebDriverWait wait = new WebDriverWait(new SystemClock(), driver, TimeSpan.FromSeconds(30), TimeSpan.FromMilliseconds(100));
// उलझाव:
driver.Manage().Timeouts().ImplicitlyWait(new TimeSpan(0, 0, 30));
// स्पष्ट प्रतीक्षा:
IWebDriver driver = new FirefoxDriver();
driver.Url = "http://somedomain/url_that_delays_loading";
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30));
IWebElement myDynamicElement = wait.Until<IWebElement>((d) =>
{
return d.FindElement(By.Id("someDynamicElement"));
});
हाँ मैं करने की कोशिश की थी, लेकिन काम नहीं किया। –