selenium使用location定位元素坐標偏差


selenium使用location定位元素坐標偏差

網上的解決方案:
python+selenium+Chromedriver使用location定位元素坐標偏差
使用xpath定位元素,用.location獲取坐標值,截取網頁截圖的一部分出現偏差。

之所以會出現這個坐標偏差是因為windows系統下電腦設置的顯示縮放比例造成的,location獲取的坐標是按顯示100%時得到的坐標,而截圖所使用的坐標卻是需要根據顯示縮放比例縮放后對應的圖片所確定的,因此就出現了偏差。
解決這個問題有三種方法:
1.修改電腦顯示設置為100%。這是最簡單的方法;
2.縮放截取到的頁面圖片,即將截圖的size縮放為寬和高都除以縮放比例后的大小;
3.修改Image.crop的參數,將參數元組的四個值都乘以縮放比例。

第一種我試了,就是將我本身的縮放由125%改為100%,雖然能夠定位准確了,但是我整個人都不好了,我接受不了

第二種,我沒理解什么意思。

最后我用的第三種,因為我的電腦縮放比例是125%,所以每個值乘以1.25:

img_code_tag = bro.find_element_by_xpath('//*[@id="loginForm"]/div/ul[2]/li[4]/div/div/div[3]/img')
# location 獲取元素坐標
time.sleep(3)
location = img_code_tag.location  # {'x': 276, 'y': 274}
size = img_code_tag.size  # {'height': 190, 'width': 293}

# 進行裁剪的范圍
k = 1.25
rangle = (location['x']*k, location['y']*k, location['x']*k+size['width']*k, location['y']*k+size['height']*k)
print(rangle)  # (345.0, 342.5, 711.25, 580.0)

i = Image.open('main.png')  # 打開之前截的圖片
frame = i.crop(rangle)  # 按范圍裁剪
frame.save('code.png')  # 保存裁剪后的圖片

win10縮放比例修改:桌面右鍵 - 顯示設置 - 縮放與布局


免責聲明!

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



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