首页 > 其他分享 >Selenium58-优化fixture

Selenium58-优化fixture

时间:2023-01-07 14:09:33浏览次数:40  
标签:division fixture driver element Selenium58 ID 优化 find

v4_1问题

  • 代码运行效率较低:
  • prepare_and_exit包含所有前置和后置步骤,每组测试数据都从重新启动浏览器开始到关闭浏览器结束。。
  • 思考:
  • 是否可以省略每组数据测试时的重新启动浏览器、重新登录、以及最后的退出登录和关闭浏览器步骤?

拆分fixture

  • 拆分为三个fixture,区分作用域

多个fixture调用关系图

  • 三个fixture和测试方法的调用关系
  • Selenium58-优化fixture_测试方法


第四版第二子版本
  • test_后台_双创_基础设置_赛区管理_添加赛区_case_v4_2.py
  • Selenium58-优化fixture_测试方法_02


prepare_and_exit
  • yield前启动浏览器,yield后是关闭浏览器退出驱动程序
@pytest.fixture(scope='session')
def prepare_and_exit():
driver = webdriver.Firefox()
driver.implicitly_wait(15)
driver.get("http://192.168.58.134:8080/integration/manage")
yield driver
sleep(2)
driver.quit()
login_and_logout
  • yield前登录,yield后退出操作
@pytest.fixture(scope='class')
def login_and_logout(prepare_and_exit):
driver = prepare_and_exit
sleep(2)
driver.find_element(By.ID, "userName").clear()
driver.find_element(By.ID, "userName").send_keys("root")
driver.find_element(By.ID, "password").clear()
driver.find_element(By.ID, "password").send_keys("12345678")
driver.find_element(By.XPATH, "//span[text()='登录']").click()
sleep(1)
yield driver
driver.switch_to.default_content()
driver.find_element(By.CLASS_NAME, "退出").click()
to_division_manager
  • yield前进入赛区管理、yield回到主网页
@pytest.fixture(scope='class', autouse=True)
def to_division_manager(login_and_logout):
driver = login_and_logout
driver.find_element(By.ID, "213").click() # 基础设置
WebDriverWait(driver, 20).until(
expected_conditions.presence_of_element_located((By.XPATH, "//div[@id='213']/img[@class='open']")))
driver.find_element(By.ID, "214").click() # 赛区管理
WebDriverWait(driver, 20).until(
expected_conditions.frame_to_be_available_and_switch_to_it((By.XPATH, "//iframe[@data-itemid='213']")))
WebDriverWait(driver, 20).until_not(expected_conditions.presence_of_element_located((By.ID, "Loading")))
yield driver
driver.switch_to.default_content()
测试用例实现脚本
  • 测试用例实现的测试方法引用to_division_manager
def test_add_division(self,to_division_manager,division_name,message):
driver = to_division_manager
……
改造判断元素出现的方法
  • 因为driver不是当前类的属性了,所以需要传入driver参数
# 判断元素是否出现
def is_element_present(self,driver,how,what):
try:
driver.find_element(how,what)
except NoSuchElementException:
return False
return True
运行调试第四版第二子版本
  • 运行,查看结果
  • Selenium58-优化fixture_测试方法_03




作者:暄总-tester










标签:division,fixture,driver,element,Selenium58,ID,优化,find
From: https://blog.51cto.com/u_14911999/5995461

相关文章

  • 通关搜索和图论 day_14 -- Dijkstra(朴素版 + 堆优化版)
    最短路分为单源最短路和多源汇最短路单源一般是求从一个点到其他所有点的最短距离源点---起点 汇点---终点多源就是会有很多个询问,起点和终点都是不确定的单源......
  • 浅析华为云基于HBase MTTR上的优化实践
    摘要:主要介绍华为云在HBase2.x内核所做的一些MTTR优化实践。本文分享自华为云社区《​​华为云在HBaseMTTR上的优化实践​​》,作者:搬砖小能手。随着HBase在华为云的广泛......
  • hdu:最短路(堆优化的dijkstra)
    ProblemDescription在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt。但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现......
  • Java 集合判空优化
    文章目录//反例LinkedList<Object>collection=newLinkedList<>();if(collection.size()==0){System.out.println("collectionisempty.");}//正例LinkedList<O......
  • Java 中map 遍历优化
    文章目录packagedemo.map;importjava.util.HashMap;importjava.util.List;importjava.util.Map;importjava.util.stream.Collectors;/***<p>*Map遍历优化*</P>......
  • Java嵌套if else优化
    文章目录​​1.传统实现​​​​2.策略模式+工厂模式+单例模式优化​​​​2.1策略接口​​​​2.2不同策略实现类​​​​2.2.1处理策略一​​​​2.2.2处理策略二​......
  • 火山引擎DataLeap数据调度实例的 DAG 优化方案
    更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,并进入官方交流群实例DAG介绍DataLeap是火山引擎自研的一站式大数据中台解决方案,集数据集成、开发、运......
  • 火山引擎DataLeap数据调度实例的 DAG 优化方案
    更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,并进入官方交流群实例DAG介绍DataLeap是火山引擎自研的一站式大数据中台解决方案,集数据集成、开发、运维、治......
  • MySQL优化(超完整版)(一)
    一、 MySQL的优化  前言:  MySQL数据库的优化模块:   -数据库的设计—三大范式   -数据库的索引:唯一索引、主键索引、聚合索引、复合索引、默认索引 ......
  • MySQL优化(超完整版)(二)
    7. MySQL分库分表(1)分库分表概念介绍  MySQL的分库分表有两种方式:垂直拆分和水平拆分。  垂直拆分:垂直拆分就是要把表按模块划分到不同数据库表中(当然原则还是不破......