一、 前言
该文档描述一次基于python的webUI自动化框架搭建过程及简单的使用。
框架构成:python + selenium + unittest
二、准备及编写条件
准备:
- IDEA工具:pycharm(社区版即可)
- Python3.9
- Webdriver.exe文件下载好,将该文件放在本地python的lib文件夹下,并将其配置到环境变量(实际上放到python的任意文件夹下都可以,但必须将其配置到环境变量,以便于运行时能找到这个文件)。或者在代码中指定驱动的路径也可以。如:driver
= webdriver.Chrome(executable_path=‘driver/chromedriver.exe’) - Chrome浏览器
注意:Webdriver.exe的版本需要和浏览器版本一致,不一致则会报错,浏览器版本可通过浏览器 “设置” --> “关于Chrome” 查看
Webdriver.exe下载地址:http://chromedriver.storage.googleapis.com/index.html
编写条件:
需掌握python基础、元素定位、三种等待方式、鼠标键盘事件、窗口切换等(多多益善)
三、初体验
1、实现用户登录:
1 from time import sleep
2 from selenium import webdriver
3 from selenium.webdriver.common.by import By
4
5 driver = webdriver.Chrome()
6 driver.get(r'https://xxx') # 打开浏览器并访问该链接,这里的链接不便展示哈
7 driver.maximize_window()
8
9 # 定位元素并操作
10 driver.find_element(By.NAME, 'username').send_keys('luoyang')
11 driver.find_element(By.NAME, 'password').send_keys('123456')
12 driver.find_element(By.XPATH, '//*[@id="app"]/div/div[2]/div/form/button').click()
13 sleep(10)
14
15 # 关闭并退出浏览器
16 driver.quit()
17
18
19
20 # 关于close()和quit():close()只是关闭浏览器当前窗口,并不会退出浏览器
21
22 # 当浏览器只有一个窗口时,使用close()虽然退出了浏览器,但驱动还在运行
23
24 # 而quit()则会关闭所有窗口,清除session,并结束驱动运行
2、进一步实现,引入unittest框架
1 from time import sleep
2 from selenium import webdriver
3 import unittest
4 from selenium.webdriver.common.by import By
5
6
7 class Login(unittest.TestCase):
8
9 def setUp(self) -> None:
10 self.driver = webdriver.Chrome()
11 self.url = r'https://xxx'
12 self.driver.maximize_window() # 最大化窗口
13 self.driver.get(self.url)
14
15 def test_login(self, username='luoyang', password='123456'):
16 self.driver.find_element(By.NAME, 'username').send_keys(username)
17 self.driver.find_element(By.NAME, 'password').send_keys(password)
18 self.driver.find_element(By.XPATH, '//*[@id="app"]/div/div[2]/div/form/button').click()
19
20 def tearDown(self) -&g