selenium 浏览器的相关操作及等待操作(二)

涉及到的库

类名导入说明
WebDriverWaitfrom selenium.webdriver.support.ui import WebDriverWait显式等待
expected_conditionsfrom selenium.webdriver.support import expected_conditions与显示等待连用
Optionsfrom selenium.webdriver.chrome.options import Options浏览器设置
Keysfrom selenium.webdriver.common.keys import Keys按键库
Byfrom selenium.webdriver.common.by import By元素零件库

浏览器操作

浏览器属性

调用说明属性说明
driver.current_url用于获得当前页面的URL
driver.title用于获取当前页面的标题
driver.page_source用于获取页面html源代码
driver.current_window_handle用于获取当前窗口句柄
driver.window_handles用于获取所有窗口句柄

浏览器函数

调用说明描述
driver.get访问网页
driver.forward在存在历史记录下,向前拜访网页
driver.back在存在历史记录下,向后拜访网页
driver.refresh浏览器刷新
driver.close关闭当前窗口
driver.quit关闭所有窗口并安全关闭session
driver.maximize_window窗口最大化
driver.set_window_size设置窗口大小
driver.get_window_size获取当前窗口大小
dirver.get_window_position获取当前窗口的坐标
driver.get_sreenshot_as_file截图当前窗口
driver.execute_script运行js
driver.get_cookies获取当前会话所有cookie信息
driver.get_cookie获取会话的cookie信息
driver.add_cookie添加cookie
driver.delete_cookie删除cookie
driver.delete_all_cookies删除所有cookie
driver.switch_to切换窗口window、框架frame,最外层default_content,警告框处理alert,跳出当前一级表单parent_content

等待操作

分为三种方式:
强制(time.sleep):不管操没操作完都停指定的事件才继续
隐式(browser.implicitly_wait(time_to_wait)):一旦设置,存在与整个实例周期中,只要定位元素,都进行一次。在指定时间内按特定频率寻找元素,找到了则结束继续下一语句,没找到则时间结束后返回NoSuchElementException异常
显式等待(WebDriverWait(driver,timeout,poll_frequency=0.5,ignored_exceptions=None)):按指定的方式执行until/until_not内的method
	driver:浏览器驱动
	timeout:最大超时时间
	poll_frequency:询问的间隔步长,默认0.5s
	ignored_exceptions:超时后的抛出异常信息,默认抛出NoSuchElementException异常
	与until和until_not连用,如:mothed可以是lambda函数或expected_conditions下的函数
	WebDriverWait(driver,10).until(method,message="")
	调用method提供的驱动程序作为参数,message传入method的参数,直到返回值为True
	WebDriverWait(driver,10).until_not(method,message="")
	调用method提供的驱动程序作为参数,message传入method的参数,直到返回值为False

WebDriverWait–显式等待

相关库

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support import By

示例

waite=webDriverWait(driver,10,0.5)
element=waite.until(EC.presence_of_element_located(By.ID,"kw"))
#判断id=kw的元素是否在dom树里
expected_conditions方法说明
title_is判断当前页面的title是否完全等于预期字符串,返回bool
title_contains判断当前页面的title是否包含预期字符串,返回bool
presence_of_element_located判断某个元素是否被加到dom树里,并不代表该元素一定可见
presence_all_element_located判断是否至少有一个元素存在于dom树里,举例:如果页面上有n个元素的class都是‘wp’,那么只要有一个元素存在,这个方法就返回True
visibility_of_element_located判断元素是否可见(可见代表元素非隐藏,并且元素宽和高都不等于0)
visibility_of同上,只是参数由locator变为定位后的元素
text_to_be_present_in_element判断某个元素的text是否包含预期的字符串
text_to_be_present_in_element_value判断某个元素中的value属性是否包含预期的字符串
frame_to_be_available_and_switch_to_it判断frame是否可以switch进去,如果可以的话,返回True并且switch进去,否则返回False
invisibility_of_element_located判断某个元素是否不存在于dom树或不可见
element_to_be_clickable判断某个元素是否可见并且可点击
element_to_be_selected判断某个元素是否被选中,一般用在下拉列表
element_selection_state_to_be判断某个元素的选中状态是否符合预期,这个方法传入element
element_located_selection_state_to_be同上,这个方法传入locator
staleness_of等某个元素从dom树中移除,返回bool值
alert_is_present判断页面上是否存在alert

也可使用lambda 自编辑函数,如

waite=webDriverWait(driver,10,0.5)
element=waite.until(lambda the:the.find_element_by_id('kw').is_displayed())#=visibility_of_element_located(By.ID,'kw')
By方法说明
By.IDid属性定位
By.NAMEname属性定位
By.CLASS_NAMEclassname属性定位
By.LINK_TEXTa标签文本属性定位
By.PARTIAL_LINK_TEXTa标签部分文本属性定位
By.TAG_NAME标签名定位
By.XPATHxpath路径定位
By.CSS_SELECTORcss选择器定位
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值