python—web页面操作之3种等待方式

导读:本篇文章讲解 python—web页面操作之3种等待方式,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

一、强制等待

在web自动化测试中,有时候为了提高效率,要避免使用强制等待
使用场合:1、调试代码的时候;2、文件上传(系统的上传界面)
time.sleep(6)

import time

from selenium import webdriver
driver=webdriver.Chrome()                     driver谷歌浏览器对象

driver.get('http://www.sogou.com')        打开搜狗浏览器

#定位到输入框,输入nba
driver.find_element_by_xpath('//input[@maxlength="100"]').send_keys('nba')

#定位到搜狗搜索按钮,点击搜狗搜索
driver.find_element_by_xpath('//input[@value="搜狗搜索"]').click()

#需要休眠一下
time.sleep(2)
driver.find_element_by_xpath('//p[@class="title-summary "]').click()

为什么找不见元素?
因为确实没有这个元素,点击搜狗搜索后,页面处于加载中,而代码执行完点击搜索后,会立即执行下一行代码,所以元素没有找到
需要休眠一下
time.sleep(2)

二、隐形等待

1、只需要在打开浏览器的时候,设置隐形等待的超时时间,之后就不需要设置第二次,全局生效
2、如果隐形等待时间设置为10,driver.implicitly_wait(10):每次查找元素的时候,都有10s的时间去等待某个元素出现
3、打开浏览器马上加上隐形等待,养成习惯
4、局限性:对某些个元素的状态无法判断

from selenium import webdriver

driver=webdriver.Chrome()            driver谷歌浏览器对象

#设置隐形等待时间
driver.implicitly_wait(10)

#打开搜狗搜索
driver.get('http://www.sogou.com')

#定位到输入框,输入nba
driver.find_element_by_xpath('//input[@name="query"]').send_keys('NBA')

#定位到搜狗搜索按钮,点击butten
driver.find_element_by_xpath('//input[@type="submit"]').click()

#定位title,点击title
driver.find_element_by_xpath('//p[@class="title-summary "]').click()

#打印当前页面
print(driver.current_url)

设置隐形等待时间,时间是全局生效的,每个元素都需要等待10s
driver.implicitly_wait(10)
为什么不设置成6000s,因为当元素不存在的时候,会真的会等待6000s

三、显性等待

等待元素出现
等待元素可以被点击
等待元素可见(已经加载出来,但是不可见)
用法
wait
wait.until()
locator

from selenium import webdriver

#显性等待路径
from selenium.webdriver.support.wait import WebDriverWait
#内置条件放在那
from selenium.webdriver.support import  expected_conditions    

driver=webdriver.Chrome()                       driver谷歌浏览器对象
driver.implicitly_wait(10)

#打开搜狗搜索
driver.get('http://www.sogou.com')
#定位到输入框,输入nba
driver.find_element_by_xpath('//input[@type="text"]').send_keys('nba')

#定位到搜狗搜索butten,点击
driver.find_element_by_xpath('//input[@value="搜狗搜索"]').click()

wait=WebDriverWait(driver,10,poll_frequency=0.2)
locator=('xpath','//p[@class="title-summary "]')
el=wait.until(expected_conditions.presence_of_element_located(locator))
el.click()

print('hello world')
print(driver.current_url)

四、显性等待具体操作

显性等待路径
from selenium.webdriver.support.wait import WebDriverWait

内置条件放在那?
from selenium.webdriver.support import expected_conditions
1、初始化一个等待器,需要传3个参数
driver
timeout
poll_frequency
wait=WebDriverWait(driver,10,poll_frequency=0.2)
2、等待某个条件的发生,返回ture、false
导入条件可以自己定义,通常可以选用内置条件
3、准备元素的定位表达式
locator=(‘xpath’,’//p[@class=”title-summary “]’)
el=wait.until(expected_conditions.presence_of_element_located(locator))
el.click(
)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之家整理,本文链接:https://www.bmabk.com/index.php/post/74335.html

(0)
小半的头像小半

相关推荐

极客之家——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!