【问题标题】:how to close IE9 browser session that has a popup message "Do you want to open or save file" displayed如何关闭显示弹出消息“您要打开还是保存文件”的 IE9 浏览器会话
【发布时间】:2013-05-22 21:11:10
【问题描述】:

在我的网络应用程序上,单击下载按钮后,会弹出一条消息,其中包含“您要从该站点打开或保存“abc.txt”吗?”页面底部会显示 3 个按钮(“打开”、“保存”和“取消”)

我正在尝试使用以下代码关闭/退出此浏览器会话

@driver.execute_script "window.onbeforeunload = function(e){};"
@driver.quit

但是,浏览器没有(但应该)关闭。我正在使用 Selenium Ruby Webdriver。请指导我解决此问题的方法。非常感谢。

请注意,使用上述代码,我可以关闭 IE9 浏览器,该浏览器会弹出消息“此页面要求您确认是否要离开 - 您输入的数据很多不会被保存”和“离开页面” ”和“留在页面上”按钮成功。但是,如果弹出消息的内容为“您要从该站点打开或保存“abc.txt”吗?”,则代码不起作用。显示 3 个按钮(“打开”、“保存”和“取消”)。

【问题讨论】:

    标签: ruby webdriver selenium-webdriver


    【解决方案1】:

    WebDriver 无法控制这些类型的“保存文件”对话框提示。

    请仔细阅读有关此主题的这篇文章(注意,他的示例是用 Java 编写的,但它们都可以很容易地移植,并且在 Ruby 中使用的代码更少)。 http://ardesco.lazerycode.com/index.php/2012/07/how-to-download-files-with-selenium-and-why-you-shouldnt/

    因此,我建议您甚至不要单击相关链接并尝试处理该对话框。相反,获取 href 值并向它发起 Net::HTTP 请求,就像这个 SO 响应向您展示了如何做:https://stackoverflow.com/a/4581116/1221475。然后,您可以使用标准 Ruby 和文件解析器检查文件内容是否正确。

    【讨论】:

      【解决方案2】:

      这是Dave Haefner 的破解。它是为 Java/Selenium 组合编写的,但您可以轻松地将其转换为 Ruby 语法。

      如果您不关心文件是否已下载,并且只想确认可以下载文件,则可以使用 HTTP 请求。您将不会下载文件,而是收到文件的标题信息,其中包含内容类型和长度等内容。有了这些信息,您就可以确认该文件是您所期望的。

          String link = driver.findElement(By.cssSelector("download-link-element")).getAttribute("href");
      
          HttpClient httpClient = HttpClientBuilder.create().build();
          HttpHead request = new HttpHead(link);
          HttpResponse response = httpClient.execute(request);
          String contentType = response.getFirstHeader("Content-Type").getValue();
          int contentLength = Integer.parseInt(response.getFirstHeader("Content-Length").getValue());
      
          assertThat(contentType, is("application/octet-stream"));
          assertThat(contentLength, is(not(0)));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-01-30
        • 1970-01-01
        • 2023-03-20
        • 1970-01-01
        • 2013-09-20
        • 1970-01-01
        • 2011-07-20
        • 1970-01-01
        相关资源
        最近更新 更多