【问题标题】:selenium 2 web driver save as dialogselenium 2 web 驱动程序另存为对话框
【发布时间】:2011-01-18 20:13:10
【问题描述】:

在 webdriver 中使用 selenium 2 我的脚本之一需要以 pdf 或 csv 格式保存报告,两者都只显示另存为对话框。我不知道如何与之互动。我现在正在尝试使用 Firefox,但希望它可以在所有浏览器中运行。

我从 2009 年阅读了几篇关于 webDriver 和 selenium 无法访问另存为对话框的帖子,但我想知道现在是否有解决方法。

我只需要点击保存单选按钮,这样它就不会尝试打开它然后点击保存按钮

【问题讨论】:

标签: selenium


【解决方案1】:

我知道的唯一解决方案是 Firefox。您可以调整配置文件首选项以自动将某些 MIME 类型下载到您选择的目录。请参阅我的回答here

【讨论】:

  • 似乎这将是一个足够常见的问题,可以在待办事项列表中名列前茅,但我已经看到线程可以追溯到 3 年前。我讨厌在我的东西中使用 hacky 解决方法
【解决方案2】:

“SaveAs”和“File Open”对话框的问题在于它们依赖于运行测试的操作系统,并且 selenium rc 无法与之交互。唯一的解决方案是使用一些外部桌面自动化脚本,如 AutoIt 来处理对话框。 Here's 一个很好的教程,教你如何做到这一点。

谢谢,
瓦米普

【讨论】:

  • OP 说的是 WebDriver 而不是 RC,所以这个功能应该是可能的。
  • 当涉及到桌面自动化时,对于 X11 -(例如 Linux,但不仅如此),您可能会对:xdotool by Jordan Sissel 感兴趣,因为“工具可以让您模拟键盘输入和鼠标活动,移动和调整窗口大小等。”
【解决方案3】:

嗯,如果您只是对下载文件感兴趣,那么您可能更喜欢手动下载文件。

使用 selenium 的原因有很多,而不是使用 http 请求来实现自动化,但一个常见的原因是避免在登录和导航时弄乱 javascript 和 cookie。如果这是您感兴趣的内容,那么下面的代码 python 代码将向您展示如何重用 selenium 中的 cookie 以获取 url。

import requests
def fetch_url(driver, url):
    cookies = dict([(cookie['name'], cookie['value']) for cookie in    driver.get_cookies()])
    driver.get_cookies()
    return requests.get(url, cookies=cookies)

如果您对全栈测试感兴趣,那就另当别论了...

【讨论】:

  • 好点,但在浏览器之外下载 URL 是完全不同的故事。
【解决方案4】:

您可以为此使用 sikulixapi 打开对话框,手动使用截图工具(确保您使用的截图适用于预期的分辨率,否则 sikuli 将无法找到糟糕的解决方案,希望这会随着时间的推移而改善。)。然后将其存储在一个文件夹中,这将是您可以使用的代码。

Pattern element = new Pattern(pathToImageString);
Screen screen = new Screen();
try{
    Match match =screen.wait(element);//if you want custom wait time (element,10.5)
    match.click();
}
catch(FindFailed findFailed){
    ..log failure
}

【讨论】:

    猜你喜欢
    • 2014-11-03
    • 1970-01-01
    • 1970-01-01
    • 2017-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-19
    • 1970-01-01
    相关资源
    最近更新 更多