web自动化--三种等待用法

强制等待&隐式等待&显示等待:

1.强制等待

time.sleep(秒)

设置一个时间,让他等待多久就会等多久

优点:代码比较简单

2.隐式等待:

implicitly_wait(秒)

优点:对整个driver周期都起作用,只要设置一次即可

缺点:会一直等待整个页面加载完成,才会执行下一步

元素已经存在但是不可见,implicitly_wait元素只出现在dom中,等待元素是不可见不可交互的

也就是有时无法生效

3.显示等待

#presence_of_element_located 等待页面上的某个元素被加载到dom树中,这并不意味一定可见的

#visibility_of_element_located 等待页面上的某个元素不仅存在于dom树中,而且可见

# title is和title_contains:验证页面标题

#text_to_be _present in_element或text to be_present_in_element_value

#验证页面上的元素显示了正确的文本

#text to_be present in element或text to be_present in_element_value#

区别:text_to_be_present_in_element不是输入的文本 <div><span><p>

#text to be present in element value输入性的文本里面 <input>

部分代码:

presence_of_element_located()等待页面上的某个元素并加载到dom树中,不一定可见
visibility_of_element_located等待页面上的某个元素不仅存在dom树中,而且可见
WebDriverWait(driver,10).until(EC.visibility_of_element_located())
driver= webdriver.Chrome()#打开浏览器
driver.get("http://novel.hctestedu.com/user/login.html")
# driver.implicitly_wait(5)
WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.ID,"txtUName"))).send_keys("13587545934")
# driver.find_element(By.ID,"txtUName").send_keys("13587545934")
WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.ID,"txtPassword"))).send_keys("q20050821")
# driver.find_element(By.ID,"txtPassword").send_keys("q20050821")
WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.ID,"btnLogin"))).click()
# driver.find_element(By.ID,"btnLogin").click()
# time.sleep(2)
WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.XPATH,'//*[text()="成吉思汗的动物军团"]'))).click()
# driver.find_element(By.XPATH,'//*[text()="成吉思汗的动物军团"]').click()
# time.sleep(2)
WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.XPATH,'//*[text()="点击阅读"]'))).click()
# driver.find_element(By.XPATH,'//*[text()="点击阅读"]').click()
# time.sleep(2)
# driver.find_element(By.XPATH,'//*[text()="加书架"]').click()
# time.sleep(2)
# sjjg=driver.find_element(By.XPATH,'//*[text()="已收藏"]').text
print(sjjg)
expECt = "已收藏"
assert sjjg==expECt,"收藏失败"
time.sleep(2)

显式等待,需要用到两个类:WebDriverWait().until和expected_conditions两个类,这两个类包括了:

presence_of_element located ;visibility_of_element_located 用于找元素

title_is和title_contains 以及 text to be_present in_element或text to be_ present in_element_value 用于断言

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值