【问题标题】:Selenium can't capture the whole element because of monitor sizeSelenium 由于监视器大小而无法捕获整个元素
【发布时间】:2022-08-19 15:13:01
【问题描述】:

在使用网站并在屏幕上捕捉特定元素的图片时, 有时我们会遇到一个问题,即元素没有以最完整的形式捕获。 在调查了该问题后,我了解到 Chrome 浏览器在笔记本电脑屏幕上打开时会发生这种情况,该屏幕较小,这就是元素未完全显示的原因。 我该如何解决这个问题?它有时也会发生在詹金斯身上,那是怎么回事?

这是我的代码sn-p:

    byte[] imageResult = element.getScreenshotAs(OutputType.BYTES);
    BufferedImage imageSnapshot = ImageIO.read(new ByteArrayInputStream(imageResult));

 
  • 您可以尝试调整屏幕分辨率以适应窗口中的应用程序。这可以工作。但理想情况下,应用程序应该是响应式的,即它应该根据屏幕大小自动调整
  • 问题是,例如特定元素很长,因此即使在常规尺寸的显示器上也需要向下滚动。所以在这种情况下,元素没有被捕获到最完整的形式
  • 也许尝试通过moveToElement() (stackoverflow.com/a/27386399/9741277) 滚动到元素
  • 是的,这就是我正在尝试的,希望它有助于捕捉整个元素
  • 试试看这个帖子:stackoverflow.com/questions/3401343/…

标签: java selenium jenkins screenshot


【解决方案1】:

您可以将设置浏览器分辨率增加到更大的尺寸并将其传递给 chrome 选项。这将增加浏览器窗口的大小,然后滚动到该元素并继续它。

    ChromeOptions options = new ChromeOptions();
    options.addArguments("--window-size=1920,1200");
    WebDriver driver = new ChromeDriver(options);

【讨论】:

    猜你喜欢
    • 2015-01-12
    • 1970-01-01
    • 2021-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-04
    • 1970-01-01
    • 2011-02-09
    相关资源
    最近更新 更多