selenium - 停止selenium服务器直到文件上传

标签 selenium selenium-rc

我正在使用 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/

相关文章:

Selenium RC 卡在 "Checking resource aliases"

Python Selenium 浏览器 火狐

batch-file - 在批处理文件中运行 Selenium

python - 提高 headless Selenium 的性能

python - 如何使用 selenium 在点击事件中下载文件?

selenium-rc - 如何使用selenium遍历表?

firefox - 如何使用 Selenium RC 关闭或最小化浏览器窗口?

java - 浏览器代理 : How to determine IP for proxy server?

css - 如何使用 intern js 截取 DOM 元素的屏幕截图?