如何自动拍摄网页的全屏截图包括使用java selenium webdriver ashot firefox的固定元素

问题描述 投票:2回答:1

我正在使用java selenium和ashot的组合来拍摄网页的全屏幕。

Enviroment:

  1. Firefox Quantum 66.0b10(64位)
  2. geckodriver-v0.24.0-Win64平台
  3. JDK-8u201窗口-64
  4. Apache的行家-3.6.0斌
  5. IntelliJ IDEA 2018.3.4 qazxsw poi

Problem:

不幸的是,有一个固定元素在滚动时保持存在于页面顶部我不想要。我只是希望它在第一个滚动中显示一次然后隐藏。

What I try:

  1. 我试图在ashot takeScreen()函数中找到滚动代码来调整滚动的高度,但找不到它。
  2. 我尝试更改Ashot的内置代码但不允许(文件是只读的)

Website for testing:

<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>3.141.59</version> </dependency> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-firefox-driver</artifactId> <version>3.141.59</version> </dependency> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>htmlunit-driver</artifactId> <version>2.33.2</version> </dependency> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-server</artifactId> <version>3.141.59</version> </dependency> <dependency> <groupId>ru.yandex.qatools.ashot</groupId> <artifactId>ashot</artifactId> <version>1.5.2</version> </dependency>

Code

http://www.nettruyen.com/truyen-tranh/kingdom-vuong-gia-thien-ha/chap-590/446770

}

Expected Result:

请看一下这些图片

package com.swtestacademy.webdriver; //Info: When you write your code IntelliJ automatically adds required classes //Also you can select and add required classes by pressing ALT+Enter then select related class import org.junit.Assert; import org.junit.Test; import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; import ru.yandex.qatools.ashot.AShot; import ru.yandex.qatools.ashot.Screenshot; import ru.yandex.qatools.ashot.shooting.ShootingStrategies; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.HashSet; import java.util.Set; /** * Created by ONUR BASKIRT on 26.08.2015. */ public class FirstAutomationTest { //We should add @Test annotation that JUnit will run below method @Test //Start to write our test method. It should ends with "Test" public void firefoxTest() throws InterruptedException, IOException { WebDriver driver = new FirefoxDriver(); driver.get("http://www.nettruyen.com/truyen-tranh/kingdom-vuong-gia-thien-ha/chap-590/446770"); Thread.sleep(3000); JavascriptExecutor js = (JavascriptExecutor)driver; //How to excute print screen for one time when class "chapter-nav scroll-to-fixed-fixed" is showed //then hidden "chapter-nav scroll-to-fixed-fixed" //and continue to takeScreenshot() js.executeScript("window.scrollTo(0,600)"); js.executeScript("document.getElementsByClassName(\"chapter-nav scroll-to-fixed-fixed\")[0].classList.add(\"hidden\")"); Screenshot screenshot = new AShot().shootingStrategy(ShootingStrategies.viewportPasting(100)).takeScreenshot(driver); BufferedImage image = screenshot.getImage(); ImageIO.write(image, "PNG", new File("D:\\" + "DDD.png")); driver.close(); }

java maven selenium automated-tests ashot
1个回答
1
投票

您可以使用https://drive.google.com/open?id=1r3tkoqs46RMZuL0U-H2U6Y5d-BB6y-jt <body>截取整个页面的屏幕截图

WebElement
© www.soinside.com 2019 - 2024. All rights reserved.