web自动化-三种等待/三种切换

一、三种等待方式

  1. 强制等待
    time.sleep(10):如果设置10秒,即使页面已经加载出来了,也不执行操作,必须够10秒才能执行下面的操作
  2. 隐形等待
    driver.implicitly_wait(30):设置最长的等待时间,在这个时间内加载完成,则执行下一步操作,整个driver的会话期内,设置一次即可,全局可用,应用度上不灵活
from selenium import webdriver
driver = webdriver.Chrome()
#全局等待-隐性等待
driver.implicitly_wait(10)
driver.get('https://www.baidu.com/')
driver.maximize_window()
driver.find_element_by_xpath('//div[@id="u1"]//a[@name="tj_login"]').click()
driver.find_element_by_id('TANGRAM__PSP_11__footerULoginBtn').click()
  1. 显性等待
    明确等到某个条件满足后,再去执行下一步操作,程序每隔xx秒看一眼,如果条件成立了,则执行下一步,否则继续等待,直到超过设置最长时间,然后抛出TimeoutException
    WebDriverWait()类,显性等待类,
    用法:WebDriverWait(driver,等待时间,轮询周期).until()/until_not()
    ecpected_conditions模块:提供一系列发生的条件
    presence_of_element_located:元素存在
    visibility_of_element_located:元素可见
    element_to_be_clickable :元素可点击

使用方法

1、先确定元素的定位表达式
2、调用WebDriverWait()类设置等待总时长,轮询周期,并调用until()、until_not()方法
WebDriverWait(driver,等待时间,轮询周期).until()/until_not(判断条件)
3、使用ecpected_conditions对应的方法来生成判断条件
EC.类名(定位方式,定位表达式)
例:等待百度登陆的弹框出现,再去操作弹出框

#显性等待需要引入三个库
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')
driver.maximize_window()
driver.find_element_by_xpath('//div[@id="u1"]//a[@name="tj_login"]').click()
id="TANGRAM__PSP_

你可能感兴趣的:(web自动化,软件测试,selenium,python)