繁体   English   中英

在 python 中使用氦气截屏

[英]Take screenshot using helium in python

我正在尝试使用 python 中的氦气对页面中的特定元素进行快照,这是我的代码

from selenium.webdriver.chrome.options import Options
from helium import *

url = 'exampleurl'
options = Options()
options.binary_location = "C:/Program Files/Google/Chrome/Application/chrome.exe"

browser = start_chrome(url, headless=False, options=options)
#.FindElementById("viewPane").ScrollIntoView True
element = browser.find_element_by_xpath("//*[@id='frmCaseNo']/div[2]/img")
#element.get_screenshot_as_file("Number.png")
#element.screenshot('Number.png')
#element.save_screenshot('Number.png')
#get_driver().save_screenshot('Number.png')
get_driver().element.save_screenshot('Number.png')

此行以 helium get_driver().save_screenshot('Number.png')成功,但此行不处理特定元素。 如何处理特定元素并对其进行快照?

Helium 也暴露了所有的 selenium 方法,所以如果你检查 webelement class

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

你可以看到有一个方法叫做

  webelement.screenshot("hellium.png") 

,这会将元素屏幕截图保存为 helium.png

所以在你的情况下使用:

element = browser.find_element_by_xpath("//*[@id='frmCaseNo']/div[2]/img")
browser.execute_script("arguments[0].scrollIntoView();", element)
element.screenshot("Number.png") 

element.screenshot("hellium.png")

完整代码:

from helium import *
from selenium.webdriver.chrome.options import Options
from shutil import copyfile
#copying it to current directory so that you don't have to do it
copyfile(r"C:\Users\Downloads\chromedriver.exe", "chromedriver.exe")
options=Options()

options.binary_location = r"C:\Program Files\Google\Chrome\Application\chrome.exe"
browser = start_chrome("https://www.google.com",options=options)
browser.find_element_by_xpath("//body").screenshot("test.png")

我通过裁剪特定元素找到了解决方法,但我欢迎任何其他想法(也许有更简单的解决方案)

from selenium.webdriver.chrome.options import Options
from helium import *
from PIL import Image

myCaseNumber = '181564540'
url = 'https://eservices.moj.gov.kw/searchPages/searchCases.jsp'
options = Options()
options.binary_location = "C:/Program Files/Google/Chrome/Application/chrome.exe"

browser = start_chrome(url, headless=False, options=options)
element = browser.find_element_by_xpath("//*[@id='frmCaseNo']/div[2]/img")
browser.execute_script("arguments[0].scrollIntoView();", element)
location = element.location
size = element.size
get_driver().save_screenshot('Temp.png')
x = location['x']
y = location['y']
width = location['x']+size['width']
height = location['y']+size['height']
im = Image.open('Temp.png')
im = im.crop((int(x), int(y), int(width), int(height)))
im.save('Number.png')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM