求老师解答,用chrome,Edge浏览器识别验证码图片,截取到的图片与实际验证码不符,但用PhantomJS浏览器可以正常截取到验证码,改怎么解决。。
来源:2-17 注册流程梳理及代码封装

追风筝的人qym
2018-08-29
#coding=utf-8from selenium import webdriverfrom time import sleepfrom PIL import Imagefrom ShowapiRequest import ShowapiRequestimport random#driver = webdriver.PhantomJS()#driver = webdriver.Edge()driver = webdriver.Chrome()#driver = webdriver.Firefox()#浏览器初始化def driver_init(): driver.get("http://www.5itest.cn/register") driver.maximize_window() sleep(5)#获取element信息def get_element(id): elemnet = driver.find_element_by_id(id) return elemnet#获取随机数def get_range_user(): user_info = ''.join(random.sample('1234567890abcdefg',8)) return user_info#获取图片def get_code_image(file_name): driver.save_screenshot(file_name) code_element = driver.find_element_by_xpath("//*[@id='getcode_num']") #print(code_element.location) left = code_element.location['x'] top = code_element.location['y'] right = code_element.size['width'] + left height = code_element.size['height'] + top im = Image.open(file_name) img = im.crop((left, top, right, height)) img.save(file_name)#解析图片获取验证码def code_online(file_name): r = ShowapiRequest("http://route.showapi.com/184-4", "73290", "91d9d5556af84a9b8d2fe02047b92c7c") r.addBodyPara("typeId", "35") r.addBodyPara("convert_to_jpg", "0") r.addFilePara("image",file_name) res = r.post() print(res.text) text = res.json()['showapi_res_body']['Result'] return textdef run_main(): user_name_infor = get_range_user() user_email = user_name_infor+"@163.com" file_name = "E:/teacher/Imoc/test02.png" driver_init() get_element("register_email").send_keys(user_email) get_element("register_nickname").send_keys(user_name_infor) get_element("register_password").send_keys("111111") get_code_image(file_name) text = code_online(file_name) get_element("captcha_code").send_keys(text) get_element("register-btn").click() driver.close()run_main()
写回答
1回答
-
追风筝的人qym
提问者
2018-08-29
找到原因了 ,改了电脑的分辨率
022018-08-30