使用机器人类在Selenium webdriver中下载文件

时间:2017-06-16 14:28:13

标签: java selenium-webdriver selenium-firefoxdriver

当我点击下载按钮使用它时,会在Firefox中弹出下载弹出窗口。它正确运行并保存文件,但当我迭代循环时它不保存而不是打开文件。下面提到的代码的解决方案吗?

Derived& Derived::operator= (Derived rhs)
{
  return BaseCRTP::operator= (std::move(rhs));
}

Firefox保存图片:

Firefox save image

1 个答案:

答案 0 :(得分:0)

您可以通过获取下载元素的src属性,然后使用诸如HttpUnit之类的http库来直接请求下载文件来尝试替代解决方案。

如果您需要在测试中验证或操作它,如果它与您的用例相匹配,那么它还有一个额外的好处:它可以更轻松地将文件作为对象提供给您。

我建议这样做,因为如果您正在为工作做这件事,那么使用不需要操纵屏幕坐标和窗口位置的解决方案通常总是更好的选择。测试下载提示可能没什么价值,因为它与您的应用程序一起存在于沙盒中。

您可以使用此代码检索当前硒测试会话正在使用的Cookie,以防万一这对您有用。

Set<Cookie> seleniumCookies = driver.manage().getCookies();
    org.apache.http.client.CookieStore cookieStore = new org.apache.http.client.BasicCookieStore();

    for (Cookie seleniumCookie : seleniumCookies) {
        org.apache.http.impl.cookie.BasicClientCookie basicClientCookie =
                new BasicClientCookie(seleniumCookie.getName(), seleniumCookie.getValue());
        basicClientCookie.setDomain(seleniumCookie.getDomain());
        basicClientCookie.setExpiryDate(seleniumCookie.getExpiry());
        basicClientCookie.setPath(seleniumCookie.getPath());
        cookieStore.addCookie(basicClientCookie);
    }

    return cookieStore;

这实际上会将您的Cookie转换为apache http库可用的表单,您可以使用该表格向应用程序发出请求,而不会让应用程序意识到您已退出selenium。如果您的请求在此示例中更改了Cookie,那么您可以使用新版本在selenium中重新设置Cookie。