1、设计封装定位元素类
# -*- coding: utf-8 -*-
# @Time : 2021/12/24 13:01
# @Author : jeffky
# @File : find_element.py
from util.read_ini import ReadIni
from selenium.webdriver.common.by import By
locator = {
'id':By.ID,
'name':By.NAME,
'css':By.CSS_SELECTOR,
'class_name':By.CLASS_NAME,
'xpath':By.XPATH
}
class FindElement(object):
def __init__(self,driver):
self.driver = driver
def get_element(self,key):
read_ini = ReadIni()
data = read_ini.get_value(key)
by = data.split('>')[0]
value = data.split('>')[1]
try:
element = self.driver.find_element(locator[by], value)
return element
except:
return None
2、将整个注册流程脚本进行模块化
# -*- coding: utf-8 -*-
# @Time : 2021/12/23 19:22
# @Author : jeffky
# @File : 2-22-register_function.py
import random
import time
from selenium import webdriver
from PIL import Image
from util.dama import base64_api
from find_element import FindElement
class RegisterFunction(object):
def __init__(self,url):
self.driver = self.get_driver(url)
#获取driver并且打开url
def get_driver(self,url):
driver = webdriver.Chrome()
driver.get(url)
driver.maximize_window()
return driver
#输入用户信息
def send_user_info(self,key,data):
self.get_user_element(key).send_keys(data)
#点击按钮
def click_button(self,key):
self.get_user_element(key).click()
#定位用户信息,获取element
def get_user_element(self,key):
find_element = FindElement(self.driver)
user_element = find_element.get_element(key)
return user_element
def get_range_user(self,digit):
'''
随机数生成用户名
:return:
digit:位数
'''
user_info = ''.join(random.sample('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', digit))
return user_info
def get_code_image(self,file_name):
'''
获取图片
:param file_name:
:return:
'''
self.driver.save_screenshot(file_name)
code_element = self.get_user_element('code_image')
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(self,file_name):
'''
解析图片
:return:
'''
self.get_code_image(file_name)
result = base64_api(uname='jeffky', pwd='boyuan1993', img=file_name, typeid=3)
return result
def main(self):
user_name = self.get_range_user(8)
user_email = user_name + "@163.com"
file_name = './img/imooc.png'
code_text= self.code_online(file_name)
self.send_user_info('user_email',user_email)
self.send_user_info('user_name',user_name)
self.send_user_info('password','111111')
self.send_user_info('code_text',code_text)
self.click_button('register_btn')
time.sleep(5)
self.driver.close()
if __name__ == '__main__':
RegisterFunction('http://www.5itest.cn/register').main()
版权声明:本文为python_jeff原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。