selenium截取全圖小夥伴們都知道,曾經去面試的時候,面試官問:如何截圖某個元素的圖?不要所有的,只要某個元素。。。小編一會兒傻眼了,
苦心人,天不負,終於找到解決辦法了。html
1.selenium提供了幾個截取全屏的方法python
--這個方法是獲取當前window的截圖,出現IOError時候返回False,截圖成功返回True。
filename參數是保存文件的路徑。web
driver.get_screenshot_as_file('/Screenshots/foo.png')面試
--這個方法也是獲取屏幕截圖,保存的是base64的編碼格式,在HTML界面輸出截圖的時候,會用到。
好比,想把截圖放到html測試報告裏。瀏覽器
driver.get_screenshot_as_base64()測試
--這個是獲取屏幕截圖,保存的是二進制數據,不多用到.編碼
driver.get_screenshot_as_png()code
2.selenium其實也提供了對元素截圖的方法,可是會報錯。聽說只有Edge瀏覽器才能用,因此能夠放棄。htm
1.以百度的搜索按鈕爲例,打印搜索按鈕所在的位置:blog
# 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表明縱座標.(每一個人的電腦窗口大小不同,獲得結果也不同, 不用糾結)
1.獲取元素的大小,用element.size就能夠獲取到了。
element = driver.find_element_by_id("su") print(element.size) # 打印元素大小
2.返回結果:{'width': 100, 'height': 36},這個也字典類型,width是寬度,height是高度。
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