【问题标题】:How to dismiss Download dialog of Chrome with Selenium (by clicking Cancel)如何使用 Selenium 关闭 Chrome 的“下载”对话框(通过单击“取消”)
【发布时间】:2018-10-12 15:43:27
【问题描述】:

我可以使用 WebDriver 在 Chrome 中自动执行下载操作。以下是我设置 Chrome 驱动程序的代码:

ChromeOptions options = new ChromeOptions();
HashMap<String, Object> chromePrefs = new HashMap<>();
chromePrefs.put("download.default_directory", "/pathToDownloadFolder");
chromePrefs.put("download.prompt_for_download", false);
chromePrefs.put("download.directory_upgrade", true);
chromePrefs.put("safebrowsing.enabled", true);
options.setExperimentalOption("prefs", chromePrefs);
// create chrome driver
webDriver = new ChromeDriver(options);

文件将保存在 pathToDownloadFolder 中。

但我不想实际保存文件。我的意图是自动化用户的操作:点击下载 -> 显示下载对话框 -> 用户点击取消。

哪个选项可以镜像下载对话框的取消按钮?

编辑

我想下载,但不保存,因为我需要点击下载按钮才能激活另一个按钮来点击,所以不需要保存文件,这就是为什么我想关闭(或自动操作用户点击取消时出现下载对话框)

我查看了Chrome Options,但目前的实现似乎不可能。有什么解决办法吗?

【问题讨论】:

  • 如果你不想下载,为什么要先点击链接下载
  • @DebanjanB 我想下载,但不保存。长话短说,我需要点击下载按钮才能激活另一个按钮来点击。这就是为什么保存文件不是强制性的。
  • @Ragnarsson 您可以在 chrome 的 下载 下启用 在下载前询问每个文件的保存位置 选项。这样它就会询问下载文件的位置。但是系统将打开以选择位置。要在该窗口中进行操作,您将不得不使用第三方工具。 Selenium 不会处理这个问题。
  • 您可以随时下载和删除文件。
  • 在新选项卡上打开chrome://downloads/ 并单击与paper-button#cancel 匹配的第一个元素怎么样?这将取消最新的下载(在您的情况下;应该有一个)。然后您需要关闭该选项卡,并返回您的主选项卡并继续您的测试。您可以按照这些步骤添加一个辅助方法。

标签: java google-chrome selenium-webdriver automated-tests


【解决方案1】:

启用或提示浏览器请求权限可以使用以下代码来完成,

chromePrefs.put("download.prompt_for_download", false);

我可以看到你已经使用了它。转至true

chromePrefs.put("download.prompt_for_download", true);

这将要求您选择下载位置。因为点击下载后,在大多数情况下系统窗口会打开,这无法使用 webdriver 处理。 为此,您必须使用 Sikuli 等第三方工具。

Sikuli的更多信息可以在here找到。

我没有使用 Sikuli ,但是当我提到你的问题时。我看到了上面链接中给出的示例。可能会对你有所帮助。

【讨论】:

  • Sikuli 仅在计算机未锁定时才能工作。 Sikuli 将使用鼠标。
猜你喜欢
  • 2018-12-02
  • 2012-01-13
  • 2023-02-16
  • 1970-01-01
  • 1970-01-01
  • 2021-11-24
  • 2011-08-03
  • 1970-01-01
  • 2023-03-06
相关资源
最近更新 更多