我正在使用 Selenium 执行文件上传任务。
这里的问题是,上传文件需要 5-10 秒的时间。但我必须停止 Selenium 服务器,直到它完全上传。
这是一些示例代码。
selenium.type("id=Fileuploader","c:\\mypic.jpg");
selenium.click("id=submmit");
它给出错误,因为 selenium.click
语句在 selenium.type
语句之后立即执行,而没有等待文件完全上传。
那么,我应该在这里使用什么来停止 Selenium 服务器(服务器必须等待一段时间)?
最佳答案
异步请求总是很难跟踪。文件上传后页面肯定有一些变化,所以找找看,等等。
您可以尝试waitForCondition() .
或者某种isElementPresent()魔法
final int TIMEOUT = 10000; // ten seconds
long targetTime = System.currentTimeInMillis() + TIMEOUT;
while((System.currentTimeInMillis() < targetTime)) {
if (selenium.isElementPresent("xpath=something")) {
break;
}
}
编辑:如果没有新元素,则至少必须有某种更改。例如,如果您的异步上传更改了某些隐藏 input
元素的 value
,您可以使用 getValue() 进行测试。 ,或者只是一个智能定位器:
isElementPresent("xpath=//input[@type='hidden' and contains(@value,'mypic.jpg')]");
EDIT2:如果我们检查的元素(在本例中为图片预览)在上传之前就存在,那么它只是不可见,我们可以通过 isVisible() 进行测试。
关于selenium - 停止selenium服务器直到文件上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10121750/