【问题标题】:Resize the web page during selenium automation run to capture a screenshot of whole page在 selenium 自动化运行期间调整网页大小以捕获整个页面的屏幕截图
【发布时间】:2015-03-21 12:09:24
【问题描述】:

在 selenium 自动化运行期间如何调整页面大小。 我想在失败期间捕获整个页面,而不仅仅是它的可见部分。 任何线索都会很棒..

关于预期的更多细节:

实际页面大小: 预期页面大小:

【问题讨论】:

  • Selenium 3.0 将回到只支持所有浏览器中的“视口”镜头的位置。在 Selenium 2.0 中,我认为只有一种浏览器支持它,我不记得是哪一种了。所以,我会放弃这个......因为 Selenium 项目无法提供这个可能是有充分理由的。
  • 我正在使用 SeleniumLibrary1...请查看有关查找内容的更多详细信息..已更新图片..
  • 您是否真的要调整页面内容的大小您是否要在单个屏幕截图中捕获整个页面?
  • 两种解决方案都可以。我只想要页面的全部内容。缩小然后截屏或截取全长页面。
  • 好的。因此,如果您使用的是我推荐的 Robot Framework,因为它直观且简单,我建议使用Selenium2Library,请参阅下面的答案。对于编写测试,我建议使用 Sublime Text 编辑器 + 机器人框架插件。

标签: firefox selenium selenium-rc robotframework


【解决方案1】:

内置Capture Page Screenshot

Selenium2Library 有一个方法,可以在单个屏幕截图中捕获整个页面。
然而,这在 Chrome 中不起作用。使用 FirefoxPhantomJS 进行无头控制测试正常。

确保在设置中包含该库。

*** Settings ***
Library         Selenium2Library

*** Test Cases ***  #or a keyword, suite setup ,...
Do The Thing
    Open Browser     ${url}    ${BROWSER}
    Maximize Browser Window

    Capture Page Screenshot

缩放

可能的Chrome 解决方法 可能是调用此命令。
这仅适用于 Chrome 和 IE。

Execute javascript  document.body.style.zoom="30%"

更多阅读:

Selenium2Library:Capture Page Screenshot

* Selenium 1 vs. Selenium 2

【讨论】:

  • 这并不能解决问题。 OP的浏览器已经最大化;这里的问题是页面的内容不适合单个屏幕。因此,解决方案是在截屏之前“缩小”视图,或者以某种方式让 Selenium 也捕获页面的不可见部分。
  • @E.Z. Capture Page Screenshot 捕获整个页面,无论视口的位置或大小如何。你在投反对票之前尝试过吗?
  • 是的,我也遇到了同样的问题。
  • 嗯,这恐怕是SeleniumLibrarySelenium2Library 实现Capture Page Screenshot 关键字的方式不同。
  • SeleniumLibrary(使用 Selenium RC)最终调用了capture_entire_page_screenshot_to_string
【解决方案2】:

我的回答将帮助您了解如何以不同尺寸以及在不同屏幕位置打开浏览器窗口。

driver = webdriver.Firefox()

将窗口大小调整为屏幕宽度/高度

driver.set_window_size(300, 500)

将窗口移动到 x/y 位置

driver.set_window_position(200, 200)

您可以根据项目要求更改屏幕坐标。 正如您在问题中提到的,您想要在应用程序中发生错误后进行屏幕截图。 所以实现这一点的最好方法是使用 try catch 异常,

一旦 try 块在 catch 中失败,您可以根据需要设置窗口的大小并获取屏幕截图。

【讨论】:

  • 是否可以使用带有机器人框架的 Python Selenium 库显示相同的内容
  • 我认为相同的命令应该适用于 python。你能试着告诉我吗?
【解决方案3】:

driver.manage().window().maximize();

【讨论】:

  • 虽然您的答案可能是正确的,但请花一些时间解释您的代码如何解决问题,同时格式化答案。
  • 这个命令只是最大化浏览器窗口。如果页面的垂直长度很大,它不会显示整页。所以这不是提问者想要的准确答案。
猜你喜欢
  • 1970-01-01
  • 2019-01-31
  • 1970-01-01
  • 2014-11-07
  • 2019-07-07
  • 2023-01-23
  • 1970-01-01
  • 2014-11-30
  • 1970-01-01
相关资源
最近更新 更多