我有一个上传文件的测试用例,我猜我需要一个while循环来确定上传完成的时间。
文件结束时会显示xpath
//div[@class='media-upload-progress finished']
或上传文件时显示//div[@class='media-upload-progress uploading']
。
我以为我可以使用while循环和SeleniumDriver
。IsElementPresent
做一些事情,但我无法弄明白。
有什么想法吗?
感谢您的帮助!
答案 0 :(得分:1)
我建议你试试DefaultWait
。 PollingInterval
会真正帮助您,因为除非文件已完全上传,否则不会显示已完成的元素。以下代码应轮询每个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 );
});
免责声明:我从来没有亲自实现这一点。所以这段代码完全没有经过我的测试。但是,从理论上讲,这应该可以解决您遇到的问题