【问题标题】:Take full page screenshot in zoom in state in Selenium在 Selenium 中以放大状态截取整页截图
【发布时间】:2015-02-06 06:34:09
【问题描述】:

我在 selenium firefox webdriver 中加载网页,然后我以 500% 放大页面,然后我希望以 500% 的放大分辨率截取页面,但它不起作用

DesiredCapabilities desiredCapabilities = DesiredCapabilities.firefox();
desiredCapabilities.setPlatform(Platform.WINDOWS);
WebDriver driver = new FirefoxDriver(desiredCapabilities);
driver.get(url);
driver.manage().window().setSize(new Dimension(Toolkit.getDefaultToolkit().getScreenSize().width, Toolkit.getDefaultToolkit().getScreenSize().height));
WebElement html = driver.findElement(By.tagName("html"));
html.sendKeys(Keys.chord(Keys.CONTROL, Keys.ADD));
html.sendKeys(Keys.chord(Keys.CONTROL, Keys.ADD));
html.sendKeys(Keys.chord(Keys.CONTROL, Keys.ADD));
html.sendKeys(Keys.chord(Keys.CONTROL, Keys.ADD));
html.sendKeys(Keys.chord(Keys.CONTROL, Keys.ADD));
html.sendKeys(Keys.chord(Keys.CONTROL, Keys.ADD));
html.sendKeys(Keys.chord(Keys.CONTROL, Keys.ADD));
html.sendKeys(Keys.chord(Keys.CONTROL, Keys.ADD));
html.sendKeys(Keys.chord(Keys.CONTROL, Keys.ADD));

此代码放大 url。 现在我想以放大的分辨率截屏。

File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(scrFile, new File("c:\\"+url.substring(url.lastIndexOf("/"),url.lastIndexOf("."))+".png"));

这是截屏,但仅以正常分辨率而不是放大分辨率。

请有人帮助如何在 selenium 中完成它,或者即使 selenium 是正确的工具。如果没有,请提出其他符合我要求的方法。

【问题讨论】:

  • 你能解释一下这条线的作用吗? WebElement html = driver.findElement(By.tagName("html"));
  • @RupeshShinde - 我认为这是按标签查找整个 html 页面,所以它说 webdriver 缩放整个 html 页面。
  • @RupeshShinde - HelpingHands 是对的。就是获取html元素,也就是整个页面,然后把页面放大。
  • 如果您改用Chrome() 而不是Firefox() - 有什么不同吗?谢谢。
  • @alecxe - 在 chrome 缩放中不起作用,它显示错误:未知错误:无法聚焦元素

标签: java selenium selenium-webdriver selenium-firefoxdriver


【解决方案1】:

你可以测试一下:

String script = "var page = this;page.zoomFactor = 0.9;";
((PhantomJSDriver)driver).executePhantomJS(script);

zoomFactor 缩放了屏幕截图。

【讨论】:

    【解决方案2】:

    以下代码对我有用。

        File scrFile2 = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
        // Now you can do whatever you need to do with it, for example copy somewhere
        FileUtils.copyFile(scrFile2, new File("c:\\tmp\\screenshot.png"));
    

    我刚刚打开一个页面并以原始大小截取了它,即使在我手动缩放它并使用您的代码(用于缩放)之后,我也得到了缩放分辨率的屏幕截图。

    【讨论】:

    • 您提供的代码没有变化,而我使用的代码不符合我的要求。我的要求是,当以正常分辨率转换为图像时,我的页面有 x*y 像素,但是当放大到 500% 时,转换后的图像中应该有 5x * 5y 像素,这不会发生。
    • 是的 Gaurav .. 我没有改变任何东西,但它对我有用.. 我得到了缩放页面的屏幕截图。对于缩放,我通过暂停执行一段时间并使用您的代码手动缩放它。这两种方式都对我有用..
    猜你喜欢
    • 2015-12-21
    • 1970-01-01
    • 2017-12-25
    • 2021-07-12
    • 2017-06-02
    • 2019-02-02
    • 2023-03-09
    • 2016-08-31
    相关资源
    最近更新 更多