在 selenium (Python) 中保存来自 URL 的图像
Saving Images from a URL in selenium (Python)
因此,我终于完成了从某个站点获取一些图像 link 的简单脚本。现在,问题是 selenium 没有保存这些图像。不,我不想要屏幕截图,它们没有达到目的。屏幕截图留下了很多白色 space,因为它在自己的分辨率中看到了。
无论如何,我试过发送 "ctrl+S" 然后按 "Enter" :
saveas = ActionChains(driver).key_down(Keys.CONTROL).send_keys('s').key_up(Keys.CONTROL).key_down(Keys.ENTER).key_up(Keys.ENTER)
saveas.perform()
现在,我在这里做错了什么? link 图片:http://imgcomic.naver.net/webtoon/654817/44/20160314180903_2cfdd685f7e4f2c93a54e819898d6fb1_IMAG01_2.jpg
Webdriver 截取整个页面。但是,您可以尝试根据元素尺寸裁剪图像。 java 下面的代码将对您有所帮助
driver.get("http://www.google.com");
WebElement image = driver.findElement(By.id("hplogo"));
//Get entire page screenshot
File screenshot = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
BufferedImage fullImg = ImageIO.read(screenshot);
//Get the location of element on the page
Point point = image.getLocation();
//Get width and height of the element
int imageWidth = image.getSize().getWidth();
int imageHeight = image.getSize().getHeight();
//Crop the entire page screenshot to get only element screenshot
BufferedImage eleScreenshot= fullImg.getSubimage(point.getX(), point.getY(), imageWidth,
imageHeight);
ImageIO.write(eleScreenshot, "png", screenshot);
//Copy the element screenshot to disk
FileUtils.copyFile(screenshot, new File("E:\selenium_desk\GoogleLogo_screenshot1.png"));
driver.close();
谢谢,
穆拉利
您可以仅使用图像 URL 创建另一个 webdriver 实例并截取屏幕截图。不理想,但大部分时间对我有用。
fb = webdriver.Firefox()
fb.set_window_size(1200,2000) # Make sure the browser size is large enough
fb.get('IMAGE_URL')
imgs = fb.find_elements_by_tag_name('img')
imgs[0].screenshot('screenshot.png')
如果尺寸很重要,您可以使用 Pillow 将图像转换为 jpg。
因此,我终于完成了从某个站点获取一些图像 link 的简单脚本。现在,问题是 selenium 没有保存这些图像。不,我不想要屏幕截图,它们没有达到目的。屏幕截图留下了很多白色 space,因为它在自己的分辨率中看到了。
无论如何,我试过发送 "ctrl+S" 然后按 "Enter" :
saveas = ActionChains(driver).key_down(Keys.CONTROL).send_keys('s').key_up(Keys.CONTROL).key_down(Keys.ENTER).key_up(Keys.ENTER)
saveas.perform()
现在,我在这里做错了什么? link 图片:http://imgcomic.naver.net/webtoon/654817/44/20160314180903_2cfdd685f7e4f2c93a54e819898d6fb1_IMAG01_2.jpg
Webdriver 截取整个页面。但是,您可以尝试根据元素尺寸裁剪图像。 java 下面的代码将对您有所帮助
driver.get("http://www.google.com");
WebElement image = driver.findElement(By.id("hplogo"));
//Get entire page screenshot
File screenshot = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
BufferedImage fullImg = ImageIO.read(screenshot);
//Get the location of element on the page
Point point = image.getLocation();
//Get width and height of the element
int imageWidth = image.getSize().getWidth();
int imageHeight = image.getSize().getHeight();
//Crop the entire page screenshot to get only element screenshot
BufferedImage eleScreenshot= fullImg.getSubimage(point.getX(), point.getY(), imageWidth,
imageHeight);
ImageIO.write(eleScreenshot, "png", screenshot);
//Copy the element screenshot to disk
FileUtils.copyFile(screenshot, new File("E:\selenium_desk\GoogleLogo_screenshot1.png"));
driver.close();
谢谢, 穆拉利
您可以仅使用图像 URL 创建另一个 webdriver 实例并截取屏幕截图。不理想,但大部分时间对我有用。
fb = webdriver.Firefox()
fb.set_window_size(1200,2000) # Make sure the browser size is large enough
fb.get('IMAGE_URL')
imgs = fb.find_elements_by_tag_name('img')
imgs[0].screenshot('screenshot.png')
如果尺寸很重要,您可以使用 Pillow 将图像转换为 jpg。