为了偷懒 用python写了个自动登录脚本
此处特别感谢Python第三方库带带弟弟OCR的验证码识别:

import ddddocr

确实好用,比百度云免费接口准确率高 省去了调接口的麻烦

在使用selenium登录过程中 原先启动的是choremedriver
但是坑爹的公司旧系统更加适配ie 谷歌登录会使得有部分控件加载慢 并且页面缩放和兼容性会有问题
本来也就凑合用了 后来去搞了iedriver 想加快执行速度 结果踩了个大坑

原先截取验证码的方法是selenium的screenshot

png = browser.find_element_by_xpath("//td[contains(@width,'160')]/img")  # img参数表示的就是图片标签 查找验证码元素
png.screenshot('login.png')    #元素截图

在找到元素后直接对其截图 非常高效

然后换到iedriver的时候,问题来了:

发生异常: WebDriverException
Message: Command not found: GET /session/1df5d0b4-6167-4700-91af-9f01a8b14a6a/element/ccbf1159-225c-4b1d-a6be-21ab663210e4/screenshot
  File "C:\Users\15311.000\Desktop\登录\登录.py", line 37, in <module>
    png.screenshot('login.png')    #元素截图

沃日! 莫非iedriver不支持这样截图
这不是嗝了

那能不能换个别的方法 比如直接取链接
img_url = element.get_attribute(‘src’)

然后发现验证码是aspx,会随时更新
没法直接通过获取src的方式弄下来 不同情况请求的图都不一样

于是上网找方法又比如

png.save_screenshot('login.png')

一样不存在

'WebElement' object has no attribute 'save_screenshot'

还有就是模拟手工点击的方法,模拟在图片上点击鼠标右键、图片另存为、弹出保存窗口的方法
但是不知道兼容性问题还是干嘛 点开右键的位置有问题 并且没用

png = browser.find_element_by_xpath("//td[contains(@width,'160')]/img")  
action = ActionChains(browser).move_to_element(png)  # 移动到该元素
action.context_click(pic)  # 右键点击该元素
action.perform() # 执行
pyautogui.typewrite(['v']) # 敲击V进行保存
time.sleep(1)# 单击图片另存之后等1s敲回车
pyautogui.typewrite(['enter'])

总之搞了半天
最后终于找到方法 就是自己切图:
找到对应元素的位置 然后用pyautogui库进行截图 然后切掉剩余部分

print(png.location)                # 打印元素坐标
print(png.size)                    # 打印元素大小
left = png.location['x']
top = png.location['y']+165 #165是浏览器的菜单栏高度
right = left + png.size['width']  
bottom = top + png.size['height']  
im = Image.open('login.png')
im = pyautogui.screenshot()
im1 = im.crop((left, top, right, bottom))
im.save('login.png')
im1.save('login.png')

终于得到和原来一样的验证码

原文地址:http://www.cnblogs.com/magnetic/p/16783901.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性