from selenium import webdriver
driver=webdriver.Chrome()
driver.get("http://www.baidu.com")
firefox----geckodriver.exe
from selenium import webdriver
driver=webdriver.Chrome()
driver=webdriver.Firefox()
IE—win10版本下是Microsoft edge-----microsoftwebdriver.exe
from selenium import webdriver
driver=webdriver.Chrome()
driver=webdriver.Edge()
2、打开注册界面并核对是否打开正确
主要是核对title标题是否与期望结果一致
#引入title包
from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
driver=webdriver.Chrome()
driver.get("http://www.baidu.com")
time.sleep(5)
EC.title_contains("百度一下,你就知道")
3、定位邮箱地址、用户名、密码并输入用户信息
四种定位方法:id、name、classname、xpath。此处省略详细过程,比较简单
driver.find_element_by_id("内容").send_Keys("内容")
driver.find_element_by_name("内容").send_Keys("内容")
driver.find_element_by_class_name("内容").send_Keys("内容")
driver.find_element_by_xpath("/html/body/div[2]/div/div[2]/div[2]/div[1]/div/div[1]/div[2]/span[2]/div/input").send_keys("ZJ2012")
4、验证码定位、识别并输入
这里展示一种识别效率一般的,识别结果准确率不高
验证码定位并识别的过程:
1、图片地址
图片每刷新一次,地址会发生变化;并不能获取到正确的验证码
2、验证码识别
详细步骤:保存当前图片—>验证码图片位置、坐标去解析,识别当前验证码–>保存为文档
cmd–>安装库:pip install Pillow (图片处理的包)
导入模块:from PIL import Image
from PIL import Image
driver.save_screenshot("E:/python_text/1.png")#整个屏幕保存
code_element=driver.find_element_by_xpath("//*[@id='imgcodediv']/span[2]/div/img") #定位验证码图片位置
print(code_element.location) #获取验证码的位置{"x":123,"y":456}
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("E:/python_text/1.png") #打开整屏图片
img=im.crop((left,top,right,height)) #从整屏上截取验证码图片
img.save("E:/python_text/2.png")
5、验证码识别并输入
导入包
import pytesseract
from PIL import Image
imge1=Image.open("E:/python_text/2.png") #打开上面保存的验证码图片
text=pytesseract.image_to_string(imge1) #验证码识别文字
print(text)
#验证码输入
driver.find_element_by_id(“register-btn").send_keys(text)
6、点击注册
driver.find_element_by_id("register-btn").click()
大功告成!作为记录篇,写的略简
下面见整体代码:
整体代码写的是5次输入后再点击注册,如果需要多次,修改for循环函数就好
from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
import time
import pytesseract
import random
from PIL import Image
driver=webdriver.Chrome()
#浏览器初始化
def web_init(address,message):
driver.get(address)
print(EC.title_contains(message))
time.sleep(2)
#获取element信息
def get_element(id,message):
element=driver.find_element_by_id(id).send_keys(message)
return element
#清空element信息
def dele_element(id):
element=driver.find_element_by_id(id).clear()
return element
#获取随机数
def get_random():
for i in range(5):
string=random.sample('123456789abcdefghijklmn',10)
return ''.join(string)
#获取图片
def get_code_image(file_name):
driver.save_screenshot(file_name)
img=driver.find_element_by_id("getcode_num")
print(img.location)
left=img.location['x']
top=img.location['y']
right=img.size['width']+left
height=img.size['height']+top
im=Image.open(file_name)
#截图保存
imge=im.crop((left,top,right,height))
#for i in range(5):
imge.save(file_name)
# 解析图片,获取验证码
def yanzhengma(filename):
#driver.find_element_by_class_name("controls row")
#读取图片信息
imge1=Image.open(filename)
text=pytesseract.image_to_string(imge1)
print(text)
return text
def input_yanzhengma(id,text):
#定位验证码输入框输入识别的验证码
driver.find_element_by_id(id).send_keys(text)
time.sleep(5)
#主函数
def run_main():
web_init("http://www.5itest.cn/register?goto=/","注册-")
for i in range(5):
get_element("register_email",get_random()+"@qq.com")
get_element("register_nickname",get_random())
get_element("register_password",get_random())
get_code_image("E:/python_text/1.png")
input_yanzhengma("captcha_code",yanzhengma("E:/python_text/3.png"))
time.sleep(1)
dele_element("register_email")
dele_element("register_nickname")
dele_element("register_password")
dele_element("captcha_code")
time.sleep(2)
driver.find_element_by_id("register-btn").click()
driver.close()
run_main()