如何使用 Selenium Webdriver 捕获特定元素而不是整个页面的屏幕截图?我尝试了已经可用的答案

Posted

技术标签:

【中文标题】如何使用 Selenium Webdriver 捕获特定元素而不是整个页面的屏幕截图?我尝试了已经可用的答案【英文标题】:How to capture the screenshot of a specific element rather than entire page using Selenium Webdriver?I tried the already available answers 【发布时间】:2021-05-07 07:54:13 【问题描述】:

如何使用 Selenium Webdriver 捕获特定元素而不是整个页面的屏幕截图?我使用的是 selenium 4.0。如何使用 Selenium Webdriver 捕获特定元素而不是整个页面的屏幕截图?

【问题讨论】:

您使用哪种语言? java , 蟒蛇 ? 我在使用 java 我应该使用 Ashot 【参考方案1】:

检查 webelement 类以了解可用方法:

在java中:

https://www.selenium.dev/selenium/docs/api/java/org/openqa/selenium/WebElement.html

   WebDriver driver = new ChromeDriver();
   driver.get("https://***.com/questions/66021499/how-to-capture-the-screenshot-of-a-specific-element-rather-than-entire-page-usin?noredirect=1#comment116730378_66021499");
   WebElement element = driver.findElement(By.cssSelector("#submit-button"));
   javascriptExecutor js = (JavascriptExecutor) driver;  

   File a = new File("a.png");
   js.executeScript("arguments[0].scrollIntoView()",element);
   File b = element.getScreenshotAs(OutputType.FILE);
   FileUtils.copyFile(b, a);

在python中:

https://www.selenium.dev/selenium/docs/api/py/webdriver_remote/selenium.webdriver.remote.webelement.html

element.screenshot(filename)

【讨论】:

@PDHide 能否分享一个示例网站的完整代码,但要截取特定的 web 元素。我想我必须滚动并截取屏幕截图 它可以工作。但是截图保存在哪里 @shivacurrent 目录为 a.png ,您也可以提供完整路径,如 c:/a.png 在那里创建文件 我找到了,但是我不能截取完整的截图我只能截取一半。我必须向下滚动才能截取完整的截图 @shiva 用滚动工具更新了代码你现在可以试试吗

以上是关于如何使用 Selenium Webdriver 捕获特定元素而不是整个页面的屏幕截图?我尝试了已经可用的答案的主要内容,如果未能解决你的问题,请参考以下文章

Selenium & webdriver.io 如何使用 executeScript?

如何使用selenium webdriver来判断一个网页加载完毕

如何使用 C# 在 Selenium WebDriver (Selenium 2) 中最大化浏览器窗口?

如何在 ruby​​ 中使用 Selenium WebDriver (selenium 2.0) 客户端设置选项

如何在 Java 中使用 Selenium WebDriver (Selenium 2) 输入文本框?

如何重新连接到 webdriver 使用 selenium 打开的浏览器?