元素不再活动时的C#Selenium循环

时间:2015-02-21 06:24:20

标签: c# selenium xpath

我有一个上传文件的测试用例,我猜我需要一个while循环来确定上传完成的时间。

文件结束时会显示xpath //div[@class='media-upload-progress finished']或上传文件时显示//div[@class='media-upload-progress uploading']

我以为我可以使用while循环和SeleniumDriverIsElementPresent做一些事情,但我无法弄明白。

有什么想法吗?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

我建议你试试DefaultWaitPollingInterval会真正帮助您,因为除非文件已完全上传,否则不会显示已完成的元素。以下代码应轮询每个dom中的100 ms并查找目标元素。

By bySelector = By.XPath("//div[@class='media-upload-progress finished']");
DefaultWait<IWebDriver> wait = new DefaultWait<IWebDriver>(driver);
wait.Timeout = TimeSpan.FromSeconds(1); // increase the timeout as needed
wait.PollingInterval = TimeSpan.FromMilliseconds(100);
wait.IgnoreExceptionTypes(typeof(NoSuchElementException));
//Add more typrof() exceptions as needed
IWebElement element = wait.Until<IWebElement>((d) =>
{
    return d.FindElement(bySelector );
});

免责声明:我从来没有亲自实现这一点。所以这段代码完全没有经过我的测试。但是,从理论上讲,这应该可以解决您遇到的问题