selenium的3种等待

selenium有3种等待,即直接等待、隐式等待、显式等待。

直接等待

直接等待即强制等待,强制线程休眠一段时间(此种等待尽量不要用)

示例:time.sleep(3)

隐式等待

作用于全局的find_element;

设置一个等待时间,认每隔0.5秒轮询查找元素是否出现,如果在设置的等待时间内元素仍未出现,就抛出异常

示例:self.driver.implicitly_wait(3)

显示等待

代码中定义等待条件,当条件发生时才继续执行代码

程序认每隔0.5秒进行一次条件判断,如果条件成立,则执行下一步;否则继续等待,直到超过设置的等待时间

示例1:webdriverwait(self.driver, 10).until(条件)
示例2:webdriverwait(self.driver, 10).until_not(条件)

代码

from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.support.wait import webdriverwait


class TestWait:

    def setup(self):
        self.driver = webdriver.Chrome(executable_path='./chromedriver.exe')
        self.driver.get('http://www.baidu.com')
        self.driver.maximize_window()
        # 隐式等待3秒
        self.driver.implicitly_wait(3)

    def teardown(self):
        self.driver.quit()

    def test_wait(self):
        self.driver.find_element(By.ID, 'kw').send_keys("软件测试")
        self.driver.find_element(By.ID, 'su').click()

        # 自定义方法作为显示等待的判断条件,必须传1个参数
        # def wait(driver):
        #     # 判断“搜索工具”元素是否出现,若出现则返回真
        #     return len(self.driver.find_elements(By.XPATH, '//*[@id="container"]/div[2]/div/div[2]/div')) >= 1
        # webdriverwait(self.driver,10).until(wait) # 注:wait不加括号

        # 显示等待“搜索工具”元素是否可点击
        webdriverwait(self.driver,10).until(expected_conditions.element_to_be_clickable((By.XPATH,'//*[@id="container"]/div[2]/div/div[2]/div')))

        # 点击第一个查询结果
        self.driver.find_element(By.XPATH,'//*[@id="3001"]/div[1]/h3/a').click()
        # 强制等待3秒
        sleep(3)

相关文章

转载地址:https://www.cnblogs.com/mini-monkey/p/12104821...
web自动化测试过程中页面截图相对比较简单,可以直接使用sel...
目录前言一、Selenium简介二、浏览器驱动1.浏览器驱动参考2....
一、iframe的含义:iframe是HTML中框架的一种形式,在对界面...
转载请注明出处❤️作者:测试蔡坨坨原文链接:caituotuo.to...
'''##**认识selenium**​**下载:pipinstall...