selenium中使用location无法定位验证码
问题描述
使用python+selenium截屏并定位验证码元素失败
解决方案
- 修改电脑显示大小设置为100%:
win10缩放比例修改:桌面右键 ->显示设置-> 缩放与布局 - 修改Image.crop参数,将参数元组的四个值都乘以缩放比例
缩放比例为150%,每个值乘以1.5
代码示例
#打开谷歌浏览器
browser=webdriver.Chrome(r'd:/chromedriver.exe')
#打开首页
browser.get('http://localhost:8080/jpress/user/register')
#窗口最大化
browser.maximize_window()
#获取验证码图片
t=time.time()
picture_name1=str(t)+'.png'
#截屏
browser.save_screenshot(picture_name1)
#验证码id
cc=browser.find_element_by_id("captchaimg")
print(cc.location)
print(cc.rect)
##########第一种写法
k=1.5
#确定左顶点坐标
left=ce.location['x']*k
top=ce.location['y']*k
#确定右底点坐标
right=ce.size['width']*k+left
height=ce.size['height']*k+top
# 将图片打开
im = Image.open(picture_name1)
# 抠图
img = im.crop((left,top,right,height))
##########第二种写法
# location=ce.location
# size=ce.size
# k = 1.5
# loc = (location['x'] * k, location['y'] * k, location['x'] * k + size['width'] * k, location['y'] * k + size['height'] * k)
# #将图片打开
# im=Image.open(picture_name1)
# #抠图
# img=im.crop(loc)
t=time.time()
#抠图后保存为第二张图片
picture_name2=str(t)+'.png'
img.save(picture_name2)#截取到的验证码图片
browser.close()