Python3+Selenium3自动化测试框架——①基本步骤

一.环境配置

1.python 3.6以及IDE

2.安装selenium package

3.将对应对应浏览器版本的driver文件放置在python安装目录下(如chromedriver.exe,MicrosoftWebDriver.exe)

微软的驱动文件需要改名如上

成功配置,运行以下代码会直接在浏览器中打开百度:

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("http://www.baidu.com")

二.需求分析

测试步骤 预期结果

三.页面结构分析

shift+crtl+C选取页面元素

使用js判断组件个数

document.getElementsByClassName("s_ipt")

四.常用操作

1.判断是否正确打开页面:

from selenium.webdriver.support import expected_conditions as ec
import time

driver.get("http://www.5itest.cn/register")
time.sleep(5)
print(ec.title_contains("注册"))

2.定位输入框输入(四种常见方法):

driver.find_element_by_id("register_email").send_keys("[email protected]")
driver.find_element_by_class_name("controls").find_elements_by_class_name("form-control")[1].send_keys("richard2333")
# 查找多个元素的时候使用find_elements_by_class_name,多个find方法查找出现多个对象时默认选择第一个,选择其他需要使用下标
driver.find_element_by_name("password").send_keys("111111")
driver.find_element_by_xpath("//*[@id='captcha_code']").send_keys("11111111111111")

3.判断页面元素是否存在:

from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.by import By

locator = (By.CLASS_NAME, "controls")  # 按照classname查找controls
WebDriverWait(driver, 10).until(ec.visibility_of_element_located(locator))  # 10代表在10s中内查找指定元素
driver.close()  # 一定要关闭driver,否则会不断启动进程导致电脑变卡

4.获取文本框中元素文本信息:

使用get_attribute()   对于文本框中信息可以用"value"

email_element=driver.find_element_by_id("register_email")
print(email_element.get_attribute("placeholder"))
email_element.send_keys("[email protected]")
print(email_element.get_attribute("value"))

5.生成随机的文本信息:

import random

for i in range(5):
    user_email = ''.join(random.sample('1234567890abcdefg', 5)) + "@163.com"  # 123456的字符串表示随机选取的字符,5表示生成的长度
    print(user_email)

6.获取验证码信息:

①截取图片

注意:根据电脑显示的缩放比例,调整页面大小,否则会导致截取不正确

from PIL import Image

driver.execute_script('document.body.style.zoom="0.8"')  # 根据电脑缩放比例缩小窗口比例
driver.save_screenshot("D:/imooc.png")
code_element = driver.find_element_by_id("getcode_num")
left = code_element.location['x']  # 获取左上角点x值
top = code_element.location['y']  # 获取左上角点y值
right = code_element.size['width'] + left  # 获取元素宽度
height = code_element.size['height'] + top  # 获取元素高度
im = Image.open("D:/Users/Richard Young/Desktop/imooc.png")
print(left, top, right, height)
img = im.crop((left, top, right, height))  # 截取图片
img.save("D:/imooc1.png")

②识别验证码信息

1.使用pytesseract package

只能识别工整规范的验证码图片

import pytesseract
from PIL import Image

image = Image.open("D:/imooc1.png")
text = pytesseract.image_to_string(image)
print(text)

2.调用外部API

可以识别不规整的验证码 但识别率取决于API

import json
import requests

def imgcode_local(imgpath):
    """
    本地图片识别
    :param imgpath: 本地图片路径
    :return: 识别结果
    """
    data = {
        'token': TOKEN,
        'type': 'local'
    }

    # binary上传文件
    files = {'file': open(imgpath, 'rb')}

    response = requests.post(URL, files=files, data=data)
    print(response.text)
    result = json.loads(response.text)
    if result['code'] == 200:
        return result['data']
    else:
        return 'error'

text = imgcode_local('D:/imooc1.png')
time.sleep(2)
driver.find_element_by_id('captcha_code').send_keys(text)

下一篇:Python3+Selenium3自动化测试框架——②流程梳理及代码封装_u011282197的博客-CSDN博客Python3+Selenium3自动化测试框架——①基本步骤对之前的步骤进行一、流程梳理以及功能封装# coding=utf-8import jsonimport randomimport timeimport requestsfrom PIL import Imagefrom selenium import webdriverdriver = webdriver.Chrome()# 浏览器初始化def driver_init(): driver.get(.https://blog.csdn.net/u011282197/article/details/122808679

你可能感兴趣的:(selenium,python,测试工具)