从 0 到 1 搭建 Python 语言 Web UI自动化测试学习系列 7--基础知识 3--常用函数 1
测试学习记录,仅供参考!
常用的函数
掌握下拉菜单、单选、警告框、进度条拖动定位技巧,模拟鼠标、键盘等一系列操作(右击、拖拽、滚动)
一些常用的函数,因为要学习 web 自动化测试,得先把这些基础知识学会,后面写框架元素定位的时候,均是基于基础去做的,所有先学好基础;掌握下拉菜单、警告框定位技巧;
1、在项目根目录下新建一个名称为 functions.py 的 Python 文件;
一、浏览器实例化
2、第一个 最基本的一个函数,浏览器实例化,创建一个特定的浏览器实例 webdriver,然后把这个实例给返回出去给 driver 这个对象,后面所有的操作均是基于创建浏览器这个实例的对象去操作的;
# 导包
from selenium import webdriver
from selenium.webdriver.common.by import By# webDriver初始化
# driver = webdriver.Chrome()
driver = webdriver.Edge()
二、页面导航
3、第二个是 页面的导航,要去操作哪一个页面,基于浏览器创建的实例 driver ,然后去 get 获取到一个页面;
# 导包
from selenium import webdriver
from selenium.webdriver.common.by import By# webDriver初始化
# driver = webdriver.Chrome()
driver = webdriver.Edge()# 页面导航
driver.get('http://localhost:8088/ecshop/user.php?act=register')
三、窗口最大化、最小化
# 窗口最大化
driver.maximize_window()
# 窗口最小化
driver.minimize_window()
四、查找元素
4、查找元素;
# 导包
from selenium import webdriver
from selenium.webdriver.common.by import By# webDriver初始化
# driver = webdriver.Chrome()
driver = webdriver.Edge()# 页面导航
driver.get('http://localhost:8088/ecshop/user.php?act=register')# 窗口最大化
driver.maximize_window()
# 窗口最小化
# driver.minimize_window()# 查找元素
driver.find_element(By.ID, 'username')
五、与页面元素交互
5、与页面元素交互,在网页上执行各种操作(模拟手工的一系列操作);
输入操作
6、 第一个 输入的操作,调用 send_keys('xxxx') 里面输入内容,比较常见的输入文本函数;
# 导包
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep# webDriver初始化
# driver = webdriver.Chrome()
driver = webdriver.Edge()# 页面导航
driver.get('http://localhost:8088/ecshop/user.php?act=register')# 窗口最大化
driver.maximize_window()
# 窗口最小化
# driver.minimize_window()# 查找元素
driver.find_element(By.ID, 'username')# 与页面元素交互,在网页上执行各种操作
# 第一个、输入文本函数
driver.find_element(By.NAME, 'email').send_keys('1234567@163.com')#页面等待3秒
sleep(3)
# 关闭实例化浏览器
driver.quit()
7、 执行 functions.py 文件查看结果;
单击操作
8、第二个 单击的操作,调用 click() 函数,其他双击、右键单击等自行了解;
# 导包
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep# webDriver初始化
# driver = webdriver.Chrome()
driver = webdriver.Edge()# 页面导航
driver.get('http://localhost:8088/ecshop/user.php?act=register')# 窗口最大化
driver.maximize_window()
# 窗口最小化
# driver.minimize_window()# 查找元素
driver.find_element(By.ID, 'username')# 与页面元素交互,在网页上执行各种操作
# 第一个、输入文本函数
driver.find_element(By.NAME, 'email').send_keys('1234567@163.com')
# 第二个、单击函数
driver.find_element(By.XPATH, '//input[@name="Submit"]').click()#页面等待3秒
sleep(3)
# 关闭实例化浏览器
driver.quit()
以’立即注册‘按钮为例;
六、警告框处理
9、 在测试 web 系统的时候,会经常遇到很多种 JS 弹窗,得把弹出的对话框关闭才能继续操作;
# 警告框的处理
# 使用 driver 对象 调用 switch_to 方法,然后在 .(点) 调用alert方法
alert = driver.switch_to.alert
# 用返回的对象 alert 去调用 accept() 来关闭弹窗
alert.accept()
优化functions.py 文件;
# 导包
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
from time import sleep# webDriver初始化
# driver = webdriver.Chrome()
driver = webdriver.Edge()# 页面导航
driver.get('http://localhost:8088/ecshop/user.php?act=register')# 窗口最大化
driver.maximize_window()
# 窗口最小化
# driver.minimize_window()# 查找元素
driver.find_element(By.ID, 'username')# 与页面元素交互,在网页上执行各种操作
# 第一个、输入文本函数 send_keys()
driver.find_element(By.NAME, 'email').send_keys('1234567@163.com')
# 第二个、单击函数 click()
driver.find_element(By.XPATH, '//input[@name="Submit"]').click()# 警告框的处理
# 使用 driver 对象 调用 switch_to 方法,然后在 .(点) 调用alert方法
alert = driver.switch_to.alert
# 添加等待时间,否则关闭处理很快,看不到效果
sleep(2)
# 用返回的对象 alert 去调用 accept() 来关闭弹窗
alert.accept()# 页面等待3秒
sleep(3)
# 关闭实例化浏览器
driver.quit()
七、下拉选择框处理
10、第三个 下拉选择框的处理,在用到下拉框的时候,需要导入 selenium 里面的一个 Select 类,这个类是专门用来处理下拉菜单的选择;
from selenium.webdriver.support.ui import Select
11、 因为要操作下拉选择框,所以先定位到这个下拉框,以‘密码提示问题’下拉选择框为例;
12、 定位到元素后可以看到它是一个组件的形式,select 下面有许多种选项,首先得把最外层的 select 给定位到,可以看到这个标签只有一个 name 属性,使用 NAME(根据标签里面有什么属性) 定位,这时候需要返回出去给 ele (自定义);
ele = driver.find_element(By.NAME, 'sel_question')
13、 然后调用刚刚导入的下拉框选择处理的这个 Select 类,把定位到的这个元素 ele 传给它 Select(ele),再返回出去给 sel = Select(ele),此时已经定位到下拉框选择的这个层级;亦可以优化直接写在 Select() 里面;
# 下拉框的处理
ele = driver.find_element(By.NAME, 'sel_question')
sel = Select(ele)
# 优化
sel = Select(driver.find_element(By.NAME, 'sel_question'))
14、 此时可以用 sel . 点 之后可以看到里面有很多种方法;
选择下拉选项
15、 怎么去选中下拉框选项,调用 select 方法可以选中下拉框选项;
通过索引
16、 第一种、通过索引去定位;
# 导包
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
from time import sleep# webDriver初始化
# driver = webdriver.Chrome()
driver = webdriver.Edge()# 页面导航
driver.get('http://localhost:8088/ecshop/user.php?act=register')# 窗口最大化
driver.maximize_window()
# 窗口最小化
# driver.minimize_window()# 查找元素
driver.find_element(By.ID, 'username')# 与页面元素交互,在网页上执行各种操作
# 第一个、输入文本函数 send_keys()
driver.find_element(By.NAME, 'email').send_keys('1234567@163.com')
# 第二个、单击函数 click()
driver.find_element(By.XPATH, '//input[@name="Submit"]').click()# 警告框的处理
# 使用 driver 对象 调用 switch_to 方法,然后在 .(点) 调用alert方法
alert = driver.switch_to.alert
# 添加等待时间,否则关闭处理很快,看不到效果
sleep(2)
# 用返回的对象 alert 去调用 accept() 来关闭弹窗
alert.accept()# 下拉框的处理
ele = driver.find_element(By.NAME, 'sel_question')
sel = Select(ele)
# 通过下拉选项的索引去获取(索引从0开始)
sel.select_by_index(3)#页面等待3秒
sleep(3)
# 关闭实例化浏览器
driver.quit()
17、 执行 functions.py 文件查看结果 能不能选到‘我的座右铭是?’;
通过 value 值
18、 第二种、通过下拉选项每一个标签名的 value 值去定位;
# 导包
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
from time import sleep# webDriver初始化
# driver = webdriver.Chrome()
driver = webdriver.Edge()# 页面导航
driver.get('http://localhost:8088/ecshop/user.php?act=register')# 窗口最大化
driver.maximize_window()
# 窗口最小化
# driver.minimize_window()# 查找元素
driver.find_element(By.ID, 'username')# 与页面元素交互,在网页上执行各种操作
# 第一个、输入文本函数 send_keys()
driver.find_element(By.NAME, 'email').send_keys('1234567@163.com')
# 第二个、单击函数 click()
driver.find_element(By.XPATH, '//input[@name="Submit"]').click()# 警告框的处理
# 使用 driver 对象 调用 switch_to 方法,然后在 .(点) 调用alert方法
alert = driver.switch_to.alert
# 添加等待时间,否则关闭处理很快,看不到效果
sleep(2)
# 用返回的对象 alert 去调用 accept() 来关闭弹窗
alert.accept()# 下拉框的处理
ele = driver.find_element(By.NAME, 'sel_question')
sel = Select(ele)
# 通过下拉选项的索引去获取(索引从0开始)
# sel.select_by_index(3)
# 通过下拉选项标签的value值定位
sel.select_by_value('favorite_movie')# 页面等待3秒
sleep(3)
# 关闭实例化浏览器
driver.quit()
通过文本
19、 第三种、通过下拉选项标签的文本内容去定位,注意文本内容的完整,否则报错;
# 导包
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
from time import sleep# webDriver初始化
# driver = webdriver.Chrome()
driver = webdriver.Edge()# 页面导航
driver.get('http://localhost:8088/ecshop/user.php?act=register')# 窗口最大化
driver.maximize_window()
# 窗口最小化
# driver.minimize_window()# 查找元素
driver.find_element(By.ID, 'username')# 与页面元素交互,在网页上执行各种操作
# 第一个、输入文本函数 send_keys()
driver.find_element(By.NAME, 'email').send_keys('1234567@163.com')
# 第二个、单击函数 click()
driver.find_element(By.XPATH, '//input[@name="Submit"]').click()# 警告框的处理
# 使用 driver 对象 调用 switch_to 方法,然后在 .(点) 调用alert方法
alert = driver.switch_to.alert
# 添加等待时间,否则关闭处理很快,看不到效果
sleep(2)
# 用返回的对象 alert 去调用 accept() 来关闭弹窗
alert.accept()# 下拉框的处理
ele = driver.find_element(By.NAME, 'sel_question')
sel = Select(ele)
# 通过下拉选项的索引去获取(索引从0开始)
# sel.select_by_index(3)
# 通过下拉选项标签的value值定位
# sel.select_by_value('favorite_movie')
# 通过下拉选项的标签的文本内容定位(需注意文本内容的完整)
sel.select_by_visible_text('我最大的爱好?')# 页面等待3秒
sleep(3)
# 关闭实例化浏览器
driver.quit()
取消选择
20、 下拉选择有多选的情况下,使用 deselect 方法可以把已经选中的给取消勾选,select 是选择,而 deselect 则是取消选择;
# 当下拉选项多选的情况下,通过索引取消选择
sel.deselect_by_index(2)
# 通过标签的value值取消选择
sel.deselect_by_value('favorite_movie')
# 通过标签文本取消选择
sel.deselect_by_visible_text('我最大的爱好?')
# 取消全部下拉选项
sel.deselect_all()
21、复选选中取消
# 导包
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
from time import sleep# webDriver初始化
# driver = webdriver.Chrome()
driver = webdriver.Edge()# 页面导航
driver.get('http://localhost:8088/ecshop/user.php?act=register')# 窗口最大化
driver.maximize_window()
# 窗口最小化
# driver.minimize_window()# 查找元素
driver.find_element(By.ID, 'username')# 与页面元素交互,在网页上执行各种操作
# 第一个、输入文本函数 send_keys()
driver.find_element(By.NAME, 'email').send_keys('1234567@163.com')
# 第二个、单击函数 click()
driver.find_element(By.XPATH, '//input[@name="Submit"]').click()# 警告框的处理
# 使用 driver 对象 调用 switch_to 方法,然后在 .(点) 调用alert方法
alert = driver.switch_to.alert
# 添加等待时间,否则关闭处理很快,看不到效果
sleep(2)
# 用返回的对象 alert 去调用 accept() 来关闭弹窗
alert.accept()# 下拉框的处理
ele = driver.find_element(By.NAME, 'sel_question')
sel = Select(ele)
# 通过下拉选项的索引去获取(索引从0开始)
# sel.select_by_index(3)
# 通过下拉选项标签的value值定位
# sel.select_by_value('favorite_movie')
# 通过下拉选项的标签的文本内容定位(需注意文本内容的完整)
sel.select_by_visible_text('我最大的爱好?')# 当下拉选项多选的情况下,通过索引取消选择
sel.deselect_by_index(2)
# 通过标签的value值取消选择
sel.deselect_by_value('favorite_movie')
# 通过标签文本取消选择
sel.deselect_by_visible_text('我最大的爱好?')
# 取消全部下拉选项
sel.deselect_all()# 页面等待3秒
sleep(3)
# 关闭实例化浏览器
driver.quit()
未完待续。。。