51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 2608|回复: 3
打印 上一主题 下一主题

python+selenium 测试百度登陆时,验证码无法破解

[复制链接]
  • TA的每日心情
    开心
    昨天 11:20
  • 签到天数: 1901 天

    连续签到: 1 天

    [LV.Master]测试大本营

    跳转到指定楼层
    1#
    发表于 2017-4-5 14:14:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    # coding:utf-8
    from PIL import Image
    import pytesseract
    from PIL import ImageEnhance
    from selenium import webdriver
    from time import sleep
    url='http://www.baidu.com'
    driver = webdriver.Chrome()
    driver.maximize_window()  #将浏览器最大化
    driver.get(url)
    driver.find_element_by_xpath('//*[@id="u1"]/a[7]').click()
    sleep(2)
    driver.find_element_by_xpath('//*[@id="TANGRAM__PSP_8__userName"]').click()
    driver.find_element_by_xpath('//*[@id="TANGRAM__PSP_8__userName"]').send_keys('xxxxxxx')
    sleep(2)
    #输入登录密码
    driver.find_element_by_xpath('//*[@id="TANGRAM__PSP_8__password"]').click()
    driver.find_element_by_xpath('//*[@id="TANGRAM__PSP_8__password"]').send_keys('xxxxxxx')
    sleep(2)
    driver.save_screenshot('E://123.png')  #截取当前网页,该网页有我们需要的验证码
    imgelement = driver.find_element_by_xpath('//*[@id="TANGRAM__PSP_8__verifyCodeImg"]')  #定位验证码
    location = imgelement.location  #获取验证码x,y轴坐标
    size=imgelement.size  #获取验证码的长宽
    rangle=(int(location['x']),int(location['y']),int(location['x']+size['width']),int(location['y']+size['height'])) #写成我们需要截取的位置坐标
    i=Image.open("E://123.png") #打开截图
    frame4=i.crop(rangle)  #使用Image的crop函数,从截图中再次截取我们需要的区域
    frame4.save('E://frame4.jpg')
    qq=Image.open('E://frame4.jpg')
    #enhancer = ImageEnhance.Color(qq)
    #enhancer = enhancer.enhance(0)
    #enhancer = ImageEnhance.Brightness(enhancer)
    #enhancer = enhancer.enhance(2)
    #enhancer = ImageEnhance.Contrast(enhancer)
    #enhancer = enhancer.enhance(8)
    #enhancer = ImageEnhance.Sharpness(enhancer)
    #qq = enhancer.enhance(20)
    text= pytesseract.image_to_string(qq) #.strip() #使用image_to_string识别验证码
    print text



    Traceback (most recent call last):
      File "D:/dataDrawing/sysTestTry/baiDuCheck1.py", line 37, in <module>
        text= pytesseract.image_to_string(qq) #.strip() #使用image_to_string识别验证码
      File "C:\Python27\lib\site-packages\pytesseract\pytesseract.py", line 161, in image_to_string
        config=config)
      File "C:\Python27\lib\site-packages\pytesseract\pytesseract.py", line 94, in run_tesseract
        stderr=subprocess.PIPE)
      File "C:\Python27\lib\subprocess.py", line 710, in __init__
        errread, errwrite)
      File "C:\Python27\lib\subprocess.py", line 958, in _execute_child
        startupinfo)
    WindowsError: [Error 2]
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏1
    回复

    使用道具 举报

  • TA的每日心情
    开心
    昨天 11:20
  • 签到天数: 1901 天

    连续签到: 1 天

    [LV.Master]测试大本营

    2#
     楼主| 发表于 2017-4-5 14:17:04 | 只看该作者
    如果能打印出text,那就验证码文本框就可以解决。。。。求大神们帮忙解决。。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    昨天 11:20
  • 签到天数: 1901 天

    连续签到: 1 天

    [LV.Master]测试大本营

    3#
     楼主| 发表于 2017-4-5 18:43:10 | 只看该作者
    找了一下午,终于解决了。就是把pytesseract.exe的文件目录配置在环境变量path下面就ok,感谢网友,感谢度娘,感谢楼主借地。。。
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-4-27 03:54 , Processed in 0.064366 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表