selenium+python自動化82-只截某個元素的圖


前言

selenium截取全圖小伙伴們都知道,曾經去面試的時候,面試官問:如何截圖某個元素的圖?不要全部的,只要某個元素。。。小編一下子傻眼了,
苦心人,天不負,終於找到解決辦法了。

selenium截圖

1.selenium提供了幾個截取全屏的方法

  • get_screenshot_as_file(self, filename)

--這個方法是獲取當前window的截圖,出現IOError時候返回False,截圖成功返回True。
filename參數是保存文件的路徑。

driver.get_screenshot_as_file('/Screenshots/foo.png')

  • get_screenshot_as_base64(self)

--這個方法也是獲取屏幕截圖,保存的是base64的編碼格式,在HTML界面輸出截圖的時候,會用到。
比如,想把截圖放到html測試報告里。

driver.get_screenshot_as_base64()

  • get_screenshot_as_png(self)

--這個是獲取屏幕截圖,保存的是二進制數據,很少用到.

driver.get_screenshot_as_png()

2.selenium其實也提供了對元素截圖的方法,但是會報錯。據說只有Edge瀏覽器才能用,所以可以放棄。

location獲取元素坐標

1.以百度的搜索按鈕為例,打印搜索按鈕所在的位置:

# coding:utf-8
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('http://www.baidu.com/')

driver.save_screenshot('button.png')
element = driver.find_element_by_id("su")
print(element.location)                # 打印元素坐標

2.返回結果:{'y': 233.0, 'x': 737.0},從返回的結果可以看出,返回的是一個字典類型數據
x代表橫坐標,y代表縱坐標.(每個人的電腦窗口大小不一樣,得到結果也不一樣, 不用糾結)

size獲取元素大小

1.獲取元素的大小,用element.size就可以獲取到了。

element = driver.find_element_by_id("su")

print(element.size)                    # 打印元素大小

2.返回結果:{'width': 100, 'height': 36},這個也字典類型,width是寬度,height是高度。

安裝pillow

1.cmd打開,輸入:pip install pillow

案例參考

# coding:utf-8
from selenium import webdriver
from PIL import Image
driver = webdriver.Chrome()
driver.get('http://www.baidu.com/')

driver.save_screenshot('button.png')
element = driver.find_element_by_id("su")
print(element.location)                # 打印元素坐標
print(element.size)                    # 打印元素大小

left = element.location['x']
top = element.location['y']
right = element.location['x'] + element.size['width']
bottom = element.location['y'] + element.size['height']

im = Image.open('button.png')
im = im.crop((left, top, right, bottom))
im.save('button.png')

seleniumQQ群:646645429


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM