对于想了解如何使用SeleniumWebdriver捕获特定元素而不是整个页面的屏幕截图?的读者,本文将是一篇不可错过的文章,我们将详细介绍selenium指定元素截图,并且为您提供关于css–如何使
对于想了解如何使用Selenium Webdriver捕获特定元素而不是整个页面的屏幕截图?的读者,本文将是一篇不可错过的文章,我们将详细介绍selenium 指定元素截图,并且为您提供关于css – 如何使用Selenium WebDriver,Java按文本选择Web元素、Selenium Webdriver python元素屏幕截图无法正常运行、Selenium Webdriver仅获取视口的屏幕截图、selenium-webdriver – 如何使用webdriver中的css选择器按值定位元素?的有价值信息。
本文目录一览:- 如何使用Selenium Webdriver捕获特定元素而不是整个页面的屏幕截图?(selenium 指定元素截图)
- css – 如何使用Selenium WebDriver,Java按文本选择Web元素
- Selenium Webdriver python元素屏幕截图无法正常运行
- Selenium Webdriver仅获取视口的屏幕截图
- selenium-webdriver – 如何使用webdriver中的css选择器按值定位元素?
如何使用Selenium Webdriver捕获特定元素而不是整个页面的屏幕截图?(selenium 指定元素截图)
目前,我正在尝试使用Selenium
WebDriver捕获屏幕截图。但是我只能获取整个页面的屏幕截图。但是,我想要的只是捕获页面的一部分,或者仅捕获基于ID或任何特定元素定位符的特定元素。(例如,我希望捕获图像ID
=“ Butterfly”的图片)
有什么方法可以按选定的项目或元素捕获屏幕截图?
答案1
小编典典我们可以通过裁剪整个页面截图来获得元素截图,如下所示:
driver.get("http://www.google.com");WebElement ele = driver.findElement(By.id("hplogo"));// Get entire page screenshotFile screenshot = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);BufferedImage fullImg = ImageIO.read(screenshot);// Get the location of element on the pagePoint point = ele.getLocation();// Get width and height of the elementint eleWidth = ele.getSize().getWidth();int eleHeight = ele.getSize().getHeight();// Crop the entire page screenshot to get only element screenshotBufferedImage eleScreenshot= fullImg.getSubimage(point.getX(), point.getY(), eleWidth, eleHeight);ImageIO.write(eleScreenshot, "png", screenshot);// Copy the element screenshot to diskFile screenshotLocation = new File("C:\\images\\GoogleLogo_screenshot.png");FileUtils.copyFile(screenshot, screenshotLocation);
css – 如何使用Selenium WebDriver,Java按文本选择Web元素
<div>noreply@somedomain.com</div>
我正在使用Java编写Selenium WebDriver.
需要这个元素的确切CSS选择器才能将它与driver.findElement(By.cssSelector(the-selector).click命令一起使用.
div [class =’b-datalist__item__addr’]选择器不够好,因为我必须根据noreply@somedomain.com搜索不是链接的文本,所以我不能使用findElement(By.linkText())命令.
解决方法
//div[contains(text(),'noreply@somedomain.com')]
Selenium Webdriver python元素屏幕截图无法正常运行
您可以尝试使用此代码,只是需要使用命令pip install Selenium-Screenshot
从命令提示符安装软件包
import time
from selenium import webdriver
from Screenshot import Screenshot_Clipping
driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(10)
driver.get("https://waitbutwhy.com/2020/03/my-morning.html")
obj=Screenshot_Clipping.Screenshot()
img_loc=obj.full_Screenshot(driver,save_path=r'.',image_name='capture.png')
print(img_loc)
time.sleep(5)
driver.close()
结果/结果显示出来,您只需要缩放保存的屏幕截图
希望这对您有用!
Selenium Webdriver仅获取视口的屏幕截图
我只需要当前视口的屏幕截图,尤其要注意滚动位置。基本上是当前Chrome驱动程序的功能。
从我所阅读的内容看来,这应该是完全可能的,但是由于某些原因,screenshot命令始终努力获取完整的文档截图。实际上,IE驱动程序会拍摄多个视口镜头,然后将它们缝合在一起。
我使用的是Ruby Webdriver,无论如何我都看不到仅截取视口的屏幕截图。可能吗?
答案1
小编典典在处理WebDriver时,有两个相互竞争的“屏幕快照”定义。第一个是开源项目使用的定义,其中屏幕快照定义为已加载页面的整个DOM的图像。在这种情况下,自2010年以来,IE驱动程序和Firefox驱动程序都在执行项目定义的正确操作。WebDriver的Chrome实现不正确,只返回可见端口的图像。
的W3C规范的webdriver,在另一方面,定义的屏幕截图是只在当前视口的。这与当前的开放源代码项目的驱动程序实现(IE和Firefox)不一致,并且可以预期在将来发生变化。规范达到“候选推荐”状态后,可能会更新那些驱动程序。
顺便说一句 ,应该注意的是,IE驱动程序 绝不 使用“滚动拼接”方法来创建其屏幕截图。它 确实
将浏览器窗口调整为足够大的大小,以显示整个DOM(如请求屏幕快照时所计算的那样),并拍摄图像。但是,请注意,根据操作系统和所用IEDriverServer
可执行文件的位数,生成这些完整DOM屏幕截图时,IE 10和11存在问题。
目前,您需要使用WebDriver外部的工具来获取IE和Firefox的仅查看端口的屏幕截图。
selenium-webdriver – 如何使用webdriver中的css选择器按值定位元素?
<tdcolspan="3"> unique text </td>
解决方法
使用CSS Selector,
By.cssSelector("td[][value='unique text']");
有关使用css选择器的更多信息,请参见See here
关于如何使用Selenium Webdriver捕获特定元素而不是整个页面的屏幕截图?和selenium 指定元素截图的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于css – 如何使用Selenium WebDriver,Java按文本选择Web元素、Selenium Webdriver python元素屏幕截图无法正常运行、Selenium Webdriver仅获取视口的屏幕截图、selenium-webdriver – 如何使用webdriver中的css选择器按值定位元素?的相关知识,请在本站寻找。
本文标签: