一、元素定位
- find_element_by_id()
- find_element_by_name()
- find_element_by_class_name()
- find_element_by_tag_name()
- find_element_by_xpath()
- find_element_by_link_text()
- find_element_by_partial_link_text()
- find_element_by_css_selector()
css_selector()参数详解:
选择器 | 例子和描述 |
---|---|
.class | .into,class选择器,选择class='into’的所有元素 |
#id | #f,id选择器,选择id=‘f’ 的所有元素 |
* | *,选择所有元素 |
element | p,选择所有的p元素 |
element>element | div>input,选择父元素为div元素的所有input子元素 |
element+element | div+input,选择同一级中紧接div元素之后的所有input元素 |
[attribute=value] | [target=_blank],选择target=“_blank”的所有元素 |
xpath()详解:
二、浏览器控制常用操作
-
控制游览器窗口大小
set_window_size(x宽,y高)
maximize_window()全屏显示 -
控制游览器后退、前进
back()
forward() -
模拟预览器刷新
refresh()刷新当前页面 -
关闭游览器
close()关闭当前游览器窗口
quite()也是退出,但是彻底关闭webdriver -
打开游览器
webdriver.Chrome()这里拿Chrome游览器为例 -
访问网站链接
游览器对象.get(url)
例如:
bro = webdriver.Chrome
bro.get(“https://www.csdn.net”) -
打印当前页面title和url
title
current_url
常用元素的操作方法
- clear() 清楚文本
- send_keys(value) 模拟按键输入
- click() 点击元素
- submit()提交表单
- size 返回元素尺寸
- text 获取元素的文本
- get_attribute(属性名)获得属性值
- is_displayed()判断该元素是否用户可见
- name 获取实例底层游览器名称
- orientation 获取当前设备的方位
- page_source 获取当前页码的源代码
- set_page_load_timeout(time_to_wait)设置一个页面完全加载完成的超时等待时间
- set_script_timeout(time_to_wait)设置脚本执行的超时时间
鼠标常用操作
from selenium.webdriver.common.action_chains import ActinoChains
ActionChains类提供鼠标常用的操作方法
- perform()执行所有ActionChains中存储的行为
- context_click()右击
- double_click()双击
- drag_and_drop()拖动
- move_to_element()鼠标悬停
ActionChains(游览器驱动).context_click/double_click/move_to_element(具体定位到的元素).perfrom()
ActionChains(游览器驱动).drag_and_drop(鼠标拖动的源元素,鼠标释放的目标元素).perfrom()
键盘常用操作
from selenium.webdriver.common.keys import keys
Keys类提供了键盘上几乎所有按键方法
- send_keys(Keys.BACK_SPACE) 模拟删除键
- send_keys(Keys.SPACE) 模拟空格键
- send_keys(Keys.TAB) 模拟制表键
- send_keys(Keys.ESCAPE) 模拟回退键
- send_keys(Keys.ENTER) 模拟回车键
- send_keys(Keyds.CONTROL,‘a’) 模拟全选ctrl+A
- send_keys(Keyds.CONTROL,‘c’) 模拟复制ctrl+c
- send_keys(Keyds.CONTROL,‘v’) 模拟粘贴ctrl+v
- send_keys(Keyds.CONTROL,‘x’) 模拟剪切ctrl+x
- send_keys(Keys.F12)模拟键盘F12
窗口、表单切换
- switch_to.frame(属性值) 切换到表单frame的内嵌页面中
- switch_to.parent_content() 跳出当前一级表单,默认对应离它最近的switch_to.frame方法
- switch_to.default_content()跳到最外层页面
- switch_to.window()实现不同窗口只间切换
- current_window_handle获得当前窗口句柄
- window_handles 返回所有窗口的句柄到当前会话
元素等待
-
显式等待 webDriverWait
from selenium.webdriver.support import expected_conditions as EC
使webdriver等待某个条件成立时继续执行。WebDriverWait类是由webdriver提供的等待方法,在设置时间内,每隔一段时间检测一次当前页面元素是否存在,在达到最长时长未检测到则抛出超时异常
一般与until()或until_not()方法配合使用element = WebdriverWait(游览器驱动器,最长超时时间单位秒,检测的间隔时间,超时后的异常信息).until(对元素进行预期条件判断)
excepted_conditions类提供预期条件判断的方法如下:
title_is | 判断当前页面的标题是否等于预期 |
---|---|
title_contains | 判断当前页面的标题是否包含预期字符串 |
presence_of_element_located | 判断元素是否被加在DOM树里,并不代表元素一定可见 |
visibility_of_element_located | 判断元素是否可见(可见代表元素非隐藏并且元素宽高不为0) |
visibility_of | 与上个方法作用一样,只是该方法接收的参数为定位后的元素 |
presence_of_all_elements_located | 判断是否至少有一个元素存在于DOM树中 |
text_to_be_present_in_element | 判断某个元素中的text是否包含了预期的字符串 |
text_to_be_present_in_element_value | 判断某个元素的value属性是否包含了预期的字符串 |
frame_to_be_available_and_switch_to_it | 判断该表单是否可以切换进去,能则True并且switch进去,相反False |
invisibility_of_element_located | 判断某个元素是否不存在于DOM树或不可见 |
element_to_be_clickable | 判断元素是否可见并且可点击 |
staleness_of | 等到一个元素从DOM树中移除 |
element_to_be_selected | 判断某个元素是否被选中,一般用在下列列表 |
element_located_to_be_selected | |
element_selection_state_to_be | 判断某个元素的选中状态是否符合预期 |
element_located_selection_state_to_be | 与上个方法作用一样,只是该方法接收的参数为定位后的元素 |
alert_is_present | 判断页面是否存在alert |
-
隐形等待
通过一定的时长等待页面元素的加载,若超出规定时长抛出NoSuchElementException异常。webdriver提供implicitly_wait()实现隐式等待,默认设置为0
bro = webdriver.Chrome()
bro.implicitly(n) -
sleep()
python的time模块,time.sleep(n)休眠n秒后继续执行
提示框处理
switch_to.alert()定位到alert/confirm/prompt,再使用以下操作
- text 返回alert/confirm/prompt中的文字信息
- accept 接受现有警告框
- dismiss 解散现有警告框
- send_keys(keysToSend)将文本发送至警告框
文件的上传与下载
1、上传
webdriver没有提供专门的上传文件的方法,对于web页面实现上传的两种方式
普通上传:将本地文件的路径作为值放在input标签中,通过form表单将值提交给服务器
插件上传:一般指基于Flash、JavaScript或Ajax等技术所实现
2、下载
允许文件自动下载并存放再指定的默认文件路径中
FirefoxProfile()
cookie操作
- get_cookies() 获得所有cookie信息
- get_cookie(name)返回字典的key为name的cookie信息
- add_cookie(cookie_dict) 添加cookie,参数为字典对象
- delete_cookie(name,options)删除cookie信息,name指要删除的cookie名称,第二个参数是可选项
- delete_all_cookies() 删除所有cookie信息
调用JavaScript
- execute_script(js代码)
截图
- get_screenshot_as_file(图片保存路径)截图当前窗口到指定路径