如何在 Ruby 中使用 Selenium webdriver 截取警报的屏幕截图?
Posted
技术标签:
【中文标题】如何在 Ruby 中使用 Selenium webdriver 截取警报的屏幕截图?【英文标题】:How can I take a screenshot of an alert using Selenium webdriver in Ruby? 【发布时间】: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
来执行此操作,无需截屏..
【参考方案1】:
在您的情况下,您需要截取完整屏幕的屏幕截图,而不仅仅是浏览器。所以你可以使用xwd对根窗口进行截图:
xwd -display :0 -root|xwdtopnm |pnmtopng > $1
【讨论】:
我在 Windows 上工作,这是一个大脚本的一部分。知道如何使用 selenium webdriver 来做到这一点吗? Alert 不是 WebElement,因此很难使用 Selenium 处理,但您可以尝试使用 Winium(它是使用 Selenium 作为基础开发的)github.com/2gis/Winium以上是关于如何在 Ruby 中使用 Selenium webdriver 截取警报的屏幕截图?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 selenium webdriver 中自动化桌面通知 - ruby
如何让 Selenium/Ruby 机器人在执行操作之前等待?
无法在 Mac 上设置 ruby-selenium Webdriver
安装selenium webdriver ruby版的时候无论是线上安装,还是gem包下载下来安装都出现错误,求解决