python - web自动化测试 - 元素操作 - 等待

# -*- coding:utf-8 -*-

'''
@project: web学习
@author: Jimmy
@file: wait.py
@ide: PyCharm Community Edition
@time: 2019-01-19 09:50
@blog: https://www.cnblogs.com/gotesting/

'''


from selenium import webdriver
import time

driver = webdriver.Chrome()
driver.get('http://www.baidu.com')
driver.find_element_by_xpath('//div[@id="u1"]//a[@name="tj_login"]').click()



# 1. 强制等待
time.sleep(2)

# 2. 隐性等待
# 设置最长等待时间,在这个时间段内只要有个时间点加载完成,则执行下一步代码,比sleep智能,能够自主判断
# 整个driver的会话周期内,设置一次即可
driver.implicitly_wait(3)

# 3. 显性等待
# 明确等到某个条件满足后,再去执行下一步操作
# 程序每隔XX秒看一眼,如果条件成立了,则执行下一步;否则继续等待,知道超过设置的最长时间,然后抛出TimeoutException
# (1)WebDriverWait(driver,等待时长,轮循周期).until() / until_not()
# (2)expected_conditions模块,提供了一系列期望发生的条件

# A.  使用之前,引入相关的库:
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import  expected_conditions as EC
from selenium.webdriver.common.by import By
# B.  先确定元素的定位表达式

ele_locator = "TANGRAM__PSP_10__footerULoginBtn"

# C.  使用expected_conditions对应的方法来生成判断条件
# EC.方法名(定位方式,定位表达式)
# EC.visibility_of_element_located(By.ID,ele_locator)

# D.  调用WebDriverWait类设置等待总时长、轮询周期
# 等待10秒钟,每隔1秒去查看对应的元素是否可见;如果可见,继续下一步操作;如果不可见,则继续等待,直到10s结束,如果元素还是不可见,则抛出超时异常
WebDriverWait(driver,10,1).until(EC.visibility_of_element_located((By.ID,ele_locator)))


driver.find_element_by_id('TANGRAM__PSP_10__footerULoginBtn').click()

driver.close()

 

posted @ 2019-01-19 10:40  JiaxyGogogo  阅读(298)  评论(0编辑  收藏  举报