ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2020-12-09 09:33:15  阅读:203  来源: 互联网

标签:浏览器 selenium 元素 driver element import 操作 until


涉及到的库

类名导入说明
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())#=presence_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选择器定位

标签:浏览器,selenium,元素,driver,element,import,操作,until
来源: https://blog.csdn.net/qq_42947060/article/details/110820451

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有