写点什么

软件测试 / 测试开发丨 Web 自动化测试中显式等待的高级使用

作者:测试人
  • 2023-05-26
    北京
  • 本文字数:1103 字

    阅读完需:约 4 分钟

获取更多相关知识

本文为霍格沃兹测试开发学社学员学习笔记分享

显式等待高级使用

目录

  • 显式等待原理

  • expected_conditions

  • 封装等待条件

显示等待原理

  • 在代码中定义等待一定条件发生后再进一步执行代码

  • 最长等待时间循环执行结束条件的函数

  • WebDriverWait(driver 实例, 最长等待时间, 轮询时间).until(结束条件函数)


显示等待-expected_conditions

  • Selenium 显式等待官网说明

  • 演示网站: vip.ceshiren.com/#/ui_study

from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support import expected_conditionsfrom selenium.webdriver.support.wait import WebDriverWait

def wait_until(): driver = webdriver.Chrome() driver.get("https://vip.ceshiren.com/#/ui_study") WebDriverWait(driver, 10).until( expected_conditions.element_to_be_clickable( (By.CSS_SELECTOR, '#success_btn'))) driver.find_element(By.CSS_SELECTOR, "#success_btn").click()
复制代码

常见 expected_conditions

显式等待-封装等待条件

  • 官方的 excepted_conditions 不可能覆盖所有场景

  • 定制封装条件会更加灵活、可控

显式等待-封装等待条件

import timefrom selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.remote.webdriver import WebDriverfrom selenium.webdriver.support.wait import WebDriverWait

class TestWebdriverWait:
driver = webdriver.Chrome()
driver.maximize_window() driver.implicitly_wait(5) driver.get("https://vip.ceshiren.com/#/ui_study") def teardown(self): self.driver.quit() def test_webdriver_wait(self): # 解决的问题:有的按钮点击一次没有反应,可能要点击多次,比如企业微信的添加成员 # 解决的方案:一直点击按钮,直到下个页面出现,封装成显式等待的一个条件 def muliti_click(button_element,until_ele): # 函数封装 def inner(driver): # 封装点击方法 driver.find_element(By.XPATH,button_element).click() return driver.find_element(By.XPATH,until_ele) return inner time.sleep(5) # 在限制时间内会一直点击按钮,直到展示弹框 WebDriverWait(self.driver,10).until(muliti_click("//*[text()='点击两次响应']","//*[text()='该弹框点击两次后才会弹出']")) time.sleep(5)
复制代码


原文链接:https://ceshiren.com/t/topic/24992


发布于: 刚刚阅读数: 3
用户头像

测试人

关注

专注于软件测试开发 2022-08-29 加入

霍格沃兹测试开发学社,测试人社区:https://ceshiren.com/t/topic/22284

评论

发布
暂无评论
软件测试/测试开发丨Web自动化测试中显式等待的高级使用_程序员_测试人_InfoQ写作社区