java - 无法获取元素的屏幕截图

标签 java selenium selenium-webdriver automation screenshot

我正在尝试使用以下代码获取 Gmail 登录页面上“下一步”按钮的屏幕截图。

    WebDriver driver = new ChromeDriver();
    driver.manage().window().maximize();
    driver.get("https://www.gmail.com");
    WebElement signupButton= driver.findElement(By.xpath("//div[@id='identifierNext']"));

    File screenshot = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
    BufferedImage image = ImageIO.read(screenshot);

    int width = signupButton.getSize().getWidth();
    int height = signupButton.getSize().getHeight();

    Rectangle rect = new Rectangle(width, height);

    Point p = signupButton.getLocation();

    BufferedImage dest = image.getSubimage(p.getX(), p.getY(), width, height);

    ImageIO.write(dest, "png", screenshot);

    FileUtils.copyFile(screenshot, new File("C:\\Users\\user\\Desktop\\Screenshots\\loginButton.png"));  

截取的屏幕截图是空的。图像中没有元素。

最佳答案

您不再需要这样做了。在最新版本的 Selenium 中,您现在可以立即截取元素的屏幕截图,因为 WebElement 接口(interface) API 已经具有该功能。看看下面的例子:

element.getScreenshotAs(OutputType.BYTES)

关于java - 无法获取元素的屏幕截图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59007541/

相关文章:

java - 如何获取条码扫描仪android的 Activity 结果?

python - ElementNotInteractableException : element not interactable error while trying to search for stock on www. finanzen.net 使用 Selenium 和 Python

selenium - 如何使用 Firefox 驱动程序读取警报消息?

java - 调整并打印下拉项目列表

java - 有没有办法在 Java 驱动程序中使用 PhantomJS 的 onResourceRequested 回调?

java - 如何使用网络驱动程序(Selenium - Java)切换到框架并单击弹出窗口?

java - 连续子数组的最大和

java - 如何在jsp中获取单选按钮列表的值

Python Selenium 打印检查元素

java - 如何在java中创建2路 map