课程内容:
- Python3的基本语法和函数面向对象编程
- 学会使用 PythonIde(社区免费版) 和快速整理代码
- PEP8编码
- Ctrl+Alt+L
- Project文件模块读写文件 路径拼接
- WebDriver API
- 断言unittest.TestCase
Selenium历史
- IE Firefox Chrome 选择拉起 根据市场份额
- B/s 结构
- Selenium Rc 依赖Js,并且效率较低
- WebDriver 3.x版本
pip install -U selenium安装最新版本selenium
WebDriver是什么
- Py -3 –m pydoc – p 4567
- (Web应用程序自动测试的快速框架)
- 3.0取代了嵌入到被测Web应用中的JavaScript
- 强大的API模拟用户输入(send_keys,12306验证码)\操作浏览器
Selenium拉起浏览器
- 新建了项目&文件 webProject/testcase(保存测试用例)/test_1_query.py
- 新建文件夹driver/驱动浏览器.exe 文件
安装的依赖,在Mac上不方便配置环境变量
注意浏览器版本,不要升到最新版本
- 调用selenium核心:From selenium import webdriver
selenium相当于一个模块包,webdriver相当于一个类
from 路径 import 内容
- 类可以继承超类,超类和单元测试类不能一起被继承(python允许多态继承)
超类即object类
- 类全局变量 路径拼接 读取驱动浏览器.exe
import os,time
import unittest
currentPath = os.path.abspath(os.path.dirname(__file__)) #当前目录
projectPath = os.path.split(currentPath)[0] #取下标
toolsPath = projectPath.replace("\\",'/')+'/driver/chromedriver'
url = 'https://www.baidu.com'
print(currentPath)
print(projectPath)
print(toolsPath)
D:\sdk\tools\untitled4\testcase (上一级文件夹路径,类型为str)
D:\sdk\tools\untitled4
D:/sdk/tools/untitled4/driver/chromedriver
定位到截图目录
toolsPath = projectPath.replace("\\",'/')+'/driver/chromedriver'
- 类外面全局变量 路径拼接
class SavePng(unittest.TestCase):
@classmethod
def setUpClass(cls):
cls.driver = webdriver.Chrome(executable_path = toolsPath)
cls.driver.get(url) #成员方法
cls.driver.implicityl_wait(10) #隐式等待
类和类的调用需要实例化
- Path.replace(“//”,”\”)
- 缺乏驱动执行文件会抛错
- 拉起浏览器(executable_path) 可执行
- @classmethod装饰器
Selenium 拉起浏览器
- 构造函数 成员变量driver
- 需要被实例化中实例
- 超类中使用
- 加了装饰器,不需要被实例化
- 归属当前类本身
- 函数形参 类初始化 def __init__(self,url, imp_time):
- 超类需要初始化
- url,imp_time为入参;数据类型、顺序一致
- self.driver = webdriver.Chrome() (右边连接左边)
- self.driver.get(url) testerhome网站
- self.driver. implicitly_wait(单位秒) 隐式等待 全局有效的 最好不要用 用显式等待、强制等待和输入等待(实际8秒,设置20秒,不会浪费时间)
- return 和是否需要return 在堆里不被释放掉就不需要return
import os,time
import unittest
currentPath = os.path.abspath(os.path.dirname(__file__)) #当前目录
projectPath = os.path.split(currentPath)[0] #取下标
toolsPath = projectPa