用selenium实现用户注册整个流程(超详细)

该博客主要围绕Selenium自动化测试展开。先介绍学习目的,包括方法封装、利用打码平台过验证等。接着对网站注册页面分析,将文本输入框共同元素封装成方法。验证码通过万维易源解决,还说明了代码编写过程,如引入模块、初始化浏览器等,最后给出完整源码下载地址。

学习目的:

       学会简单的方法封装

       利用打码平台过验证

       熟悉相应的库

 首先我们进入一个网站的注册页面

(注:该页面版权归该网站所有,对该网站的行为仅做为学习,承诺无任何恶意行为)

页面分析:

                微信号:(即账号,没有字符限制,特殊符限制,没有微信验证)

                密码:(没有字符长度限制)

                确认密码:(要与密码要一致)

                验证码输入框:4个与图片一致的字符

                验证码:4个字符验证码

                注册按钮:所有文本框填写完成后点击

获取微信号、密码、确认密码、验证码文本框、验证码图片、立即注册按钮的源码

       通过以上源码发现,文本输入框有共同元素 class="layui_input"、type=""、name=""

那么我们可以把他们共同“点”封装成一个方法,然后在主程序中直接调用。

      我选择name这个元素,因为class="layui_input"他们都有不好区分,在selenium中没有找type的方法

选name的话只需要在 driver.find_element_by_name() 括号中改成变量名就行了

 

验证码解决办法:

           百度搜索万维易源,注册个账号,需要购买,

 

准备好后开始码代码:               

用到的库安装方法
seleniumpip install selenium
Pillowpip install Pillow
pytesseract

pip install pytesseract

             


      引入用到的模块

from selenium import webdriver # 首先引入webdriver
import time                    # 引入时间 后面加等待时间用

      启动浏览器

driver = webdriver.Firefox() # 应为我这里用的是火狐浏览器,可根据实际情况进行修改

      启动浏览器后我们是否会输入访问的地址?一般都是这样操作的哈,所以我们现在初始化浏览器

def driver_init():       #  封装一个浏览器初始化的方法
    driver.get("http://www.xxxx.com/login/register.html")   # 根据实际情况修改网址
    time.sleep(5)                    # 等待5秒让网页加载完成

      根据对网页的分析我们把获取文本框的路径进行封装

def get_xpathname(name):            # 封装获取name的方法 定义name变量
    xpathname = driver.fand_element_by_name(name)
    return xpathname     

       为了满足较为真实的情况账号采用随机值

def get_rangeuser():         封装获取随机值的方法  
    user_info= "".join(random.sample("abcdefghijklmn123456789",8)) # 随机组成8个字符随机值
    return user_info

      在上面获取随机值的方法中用到了random这个模块,所以我们要引入这个模块

import random

     现在获取图片并利用第三方模块进行解析,读取图片对象用到Image所以要引入这个模块

from PIL import Image
def get_code_image(file_name):                 # 封装获取图片的方法并定义图片地址变量
    driver.save_screenshot(file_name)
    code_element = driver.find_element_by_id("captcha")  # 找到验证码图片路径
    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)

     通过以上方法获取到图片,现在用第三方接口进行识别读取,用到第三方包 ShowapiRequest ,引入这个包

from ShowapiRequest import ShowapiRequest

      解析方法,第三方提供了使用方法

      

def code_online(file_name):              # 封装解析图片的方法  
    r = ShowapiRequest("http://route.showapi.com/184-4", "xxxx", "xxxxxxx")
    # r.addBodyPara("img_base64", "")
    r.addBodyPara("typeId", "34")
    r.addBodyPara("convert_to_jpg", "0")
    r.addBodyPara("needMorePrecise", "0")
    r.addFilePara("image", file_name)  
    res = r.post()
    print(res.text)
    text = res.json()['showapi_res_body']['Result']
    print(text)
    return text

          以上方法完成后编写主程序

def run_main():             # 调用封装的方法来实现注册              
    user_name_iofo = get_rangeuser()            
    file_name = "E:/Qest/test01.png"            
    driver_init()
    get_xpathname("name").send_keys(user_name_iofo)   
    print(user_name_iofo)
    get_xpathname("password1").send_keys("Qq123456")
    get_xpathname("password").send_keys("Qq123456")
    # driver.find_element_by_xpath("/html/body/div/form/div[1]/div[3]/div/input").send_keys("Qq123456")
    get_code_image(file_name)
    text = code_online(file_name)
    get_xpathname("captcha").send_keys(text)
    driver.find_element_by_xpath("/html/body/div/form/div[2]/div/button").click()
    driver.close()

run_main()

 run一下

完整源码下载地址(包含测试地址,请勿有恶意行为,否则后果自负):https://download.youkuaiyun.com/download/moveym/11191131

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值