1、什么是ui自动化?
通过模拟手工操作用户ui页面的方式,用代码去实现自动化操作和验证的行为。
2、ui自动化的优点?
(1)解决重复性的功能测试和验证
(2)减少测试人员在回归测试时用例漏测和验证点的漏测
(3)减少冒烟测试,回归测试的人力成本,节省时间,提高测试效率
3、ui自动化缺点?
(1)需求不稳定,比如,敏捷开发速度快,ui频繁变更,定位不稳定,提高了用例维护的成本
(2)用例的覆盖率少,占用例总数的10%-30%
(3)场景覆盖占当前功能场景70%-80%
4、ui自动化和功能测试那个更重要?
都重要
原因:(1)功能测试是基础,在熟悉功能的前提下才能做好ui自动化
5、安装selenium
、安装selenium命令(在dos命令中cmd )
pip install selenium==3.141.0 (python3中pip.exe默认在python的Scripts路径下)

2、可使用以下命令查看是否安装成功:
pip list

4、pycharm安装selenium

在安装谷歌浏览器,安装驱动

对应版本镜像链接1:http://chromedriver.storage.googleapis.com/index.html
对应版本镜像链接2:https://registry.npmmirror.com/binary.html?path=chromedriver/
谷歌下载低版本:https://downzen.com/en/windows/google-chrome/versions/ 不同版本的谷https://googlechromelabs.github.io/chrome-for-testing/#stable 最新版本Google驱动歌
安装谷歌,在安装驱动

在调试:
from selenium import webdriver #导入selenim 这个模块中的webdriver
dx=webdriver.Chrome() #创建谷歌对象
dx.get("https://www.baidu.com/") #通过对象.get 打开网站
三、语句
1、打开页面方法
(1)get 方法

get 覆盖窗口
from selenium import webdriver #导入selenim 这个模块中的webdriver
import time
dx=webdriver.Chrome() #创建谷歌对象
dx.get("https://www.baidu.com/") #通过对象.get 打开网站
time.sleep(3)
dx.get("https://www.jd.com/")

(2)另开窗口
window.open
案例:
from selenium import webdriver #导入selenim 这个模块中的webdriver
import time
dx=webdriver.Chrome() #创建谷歌对象
dx.get("https://www.baidu.com/") #通过对象.get 打开网站
time.sleep(3)
jb="window.open('https://www.jd.com/')"
ck=dx.execute_script(jb)

(二)
1、时间等待中的三种
1.1强制等待 sleep(xx) 例如:time.sleep(10)
1.2.隐性等待 implicitly_wait(xx) 例如:driver.implicitly_wait(10)
1.3.显性等待 WebDriverWait
UI自动化测试中的等待方式主要有三种:强制等待、隐性等待和显性等待。下面将分别对这三种等待方式进行详细介绍:
1. 强制等待
定义:强制性让代码等待固定的时间,等待时间结束后继续执行下一步操作。
实现方式:通常使用Python的内置time模块提供的`time.sleep()`方法
例如,time.sleep(5)`表示强制性等待5秒时间。
优缺点:强制等待的缺点是显而易见的,即不管页面元素是否加载完成,都会等待指定的时间,这可能会导致不必要的等待时间,增加程序的执行时间。其优点则是实现简单,不需要额外的条件判断。

2. 隐性等待
定义:设置最长的等待时间,等待页面元素加载完成。若在最长等待时间内完成加载,则继续下一步操作;若超过最长等待时间,则跳出等待继续下一步。
实现方式:隐性等待通常使用Selenium库中的`WebDriver`对象的`implicitly_wait()`方法。例如,
driver.implicitly_wait(20)`表示设置隐性等待时间为20秒。
优缺点:隐性等待的优点是设置一次后全局生效,不需要在每个元素等待时都进行设置。此外,当元素加载完成时,会立即继续执行,不会浪费时间。但其缺点是只能用于等待元素的出现,不能用于等待元素的其他状态(如可见、可点击等)。此外,窗口切换的等待不能引用隐性等待。

3. 显性等待
定义:在某个已设定的特定条件中,等待指定的时间,并在等待期间不断检查条件是否满足。若条件满足,则跳入下一步操作;若超过最大等待时间,则抛出异常。
实现方式:显性等待通常使用Selenium库中的`WebDriverWait`类。例如,`WebDriverWait(driver, timeout, poll_frequency).until(EC.visibility_of_element_located(locator))`表示等待最长`timeout`时间,每隔`poll_frequency`秒检查一次条件`EC.visibility_of_element_located(locator)`是否满足(即元素是否可见)。
优缺点:显性等待的优点是灵活性强,可以根据需要设置不同的等待条件和等待时间。同时,它还可以等待元素的其他状态(如可见、可点击等),提高了测试的准确性。但其缺点是相对复杂,需要编写更多的代码。
在实际应用中,可以根据测试需求和页面元素加载的特点选择合适的等待方式。例如,对于简单的页面加载,可以使用强制等待或隐性等待;对于复杂的页面交互和元素状态检查,则建议使用显性等待。
四、刷新页面
refresh()

(5)back 返回上一页

(6)forward 切换到下一页

from selenium import webdriver #导入selenim 这个模块中的webdriver
import time
dx=webdriver.Chrome() #创建谷歌对象
dx.get("https://www.baidu.com/") #
time.sleep(5)
dx.get("https://www.jd.com/") #
time.sleep(2)
dx.back() #返回上一页
time.sleep(2)
dx.forward() #切换到下一页
(7)set_window_size 设置窗口大小

(8)窗口最大化
maximize_window()

(9)
get_screenshot_as_file 截屏

(10)退出:
close 关闭当前窗口
from selenium import webdriver #导入selenim 这个模块中的webdriver
import time
dx=webdriver.Chrome() #创建谷歌对象
dx.get("https://www.baidu.com/") #通过对象.get 打开网站
dx.implicitly_wait(50)
jb="window.open('https://www.jd.com/')"
ck=dx.execute_script(jb)
print(dx.title) #打印抬头
dx.close() #关闭浏览器
quit 关闭所有窗口
from selenium import webdriver #导入selenim 这个模块中的webdriver
import time
dx=webdriver.Chrome() #创建谷歌对象
dx.get("https://www.baidu.com/") #通过对象.get 打开网站
dx.implicitly_wait(50)
jb="window.open('https://www.jd.com/')"
ck=dx.execute_script(jb)
print(dx.title) #打印抬头
dx.quit() #关闭浏览器
浙公网安备 33010602011771号