【问题标题】:How can I take a screenshot of an alert using Selenium webdriver in Ruby?如何在 Ruby 中使用 Selenium webdriver 截取警报的屏幕截图?
【发布时间】:2018-05-21 10:52:37
【问题描述】:

您好,我是 selenium 的新用户。我正在尝试在 ruby​​ 中使用 selenium webdriver 截取警报的屏幕截图。

@driver.find_element(:name, "updateButton").click
@driver.save_screenshot "./#{Time.now.strftime("Alert_Screenshot___%d_%m_%Y__%H_%M_%S")}.png"

没有截屏,而是抛出了这个错误:

Selenium::WebDriver::Error::UnhandledAlertError

我当然可以接受警报:

@driver.switch_to.alert.accept

然后截图。但我想知道有没有办法在提示警报时截屏

【问题讨论】:

  • 鉴于 Selenium 可以为您获取消息,拍摄警报的屏幕截图有什么意义。警报是由浏览器而不是页面创建的。
  • 确实如此。获取屏幕截图的唯一原因是检查警报的消息...但是您可以使用Selenium 来执行此操作,无需截屏..

标签: ruby-on-rails ruby selenium selenium-webdriver screenshot


【解决方案1】:

在您的情况下,您需要截取完整屏幕的屏幕截图,而不仅仅是浏览器。所以你可以使用xwd对根窗口进行截图:

xwd -display :0 -root|xwdtopnm |pnmtopng > $1

【讨论】:

  • 我在 Windows 上工作,这是一个大脚本的一部分。知道如何使用 selenium webdriver 来做到这一点吗?
  • Alert 不是 WebElement,因此很难使用 Selenium 处理,但您可以尝试使用 Winium(它是使用 Selenium 作为基础开发的)github.com/2gis/Winium
猜你喜欢
  • 1970-01-01
  • 2015-10-28
  • 1970-01-01
  • 2019-03-11
  • 1970-01-01
  • 1970-01-01
  • 2014-08-25
  • 2017-02-12
  • 1970-01-01
相关资源
最近更新 更多