浏览器
- maximize_window() #将浏览器最大化显示
- set_window_size(480, 800) #设置浏览器大小
- back()和 forward()方法 #前进后退
- driver.refresh() #页面刷新
定位/操作对象
webdriver 提供了一系列的元素定位方法,常用的有以下几种:
- id
- name
- class name
- tag name
- link text
- partial link text
- xpath
- css selector
获取单个的:find_element_by_xxx()
获取所有的:find_elements_by_xxx()获取所有的
传数据:send_keys()
点击:click()
清除数据:clear()
提交:submit()
其他常用WebElement方法
获取该对象的尺寸大小:driver.find_element_by_id("kw").size()
获取该对象的文本:driver.find_element_by_id("cp").text
获取该对象的属性:driver.find_element_by_id('su').get_attribute('type')
该对象是否可见(布尔):driver.find_element_by_id("kw").is_displayed()
键盘事件
from selenium.webdriver.common.keys import Keys
- send_keys(Keys.BACK_SPACE) 删除键(BackSpace)
- send_keys(Keys.SPACE) 空格键(Space)
- send_keys(Keys.TAB) 制表键(Tab)
- send_keys(Keys.ESCAPE) 回退键(Esc)
- send_keys(Keys.ENTER) 回车键(Enter)
- send_keys(Keys.CONTROL,'a') 全选(Ctrl+A)
- send_keys(Keys.CONTROL,'c') 复制(Ctrl+C)
- send_keys(Keys.CONTROL,'x') 剪切(Ctrl+X)
- send_keys(Keys.CONTROL,'v') 粘贴(Ctrl+V)
层级定位
driver.find_element_by_id('xx').find_element_by_link_text('xx').click()
这里用到了二次定位,通过对 Link1 的单击之后,出现下拉菜单,
先定位到下拉菜单,再定位下拉菜
单中的选项。当然,如果菜单选项需要单击,可通过二次定位后也直接跟 click()操作。
frame定位
switch_to_frame方法
跳转句柄
- current_window_handle获得当前窗口句柄
- window_handles返回的所有窗口的句柄到当前会话
- switch_to_window()
- close() 与quit的区别是关闭标签页,而不是退出程序
select(option)
对这种类型的下拉框一般的处理是两次点击,第一点击弹出下拉框,
第二次点击操作元素。当然,也有些下拉框是鼠标移上去直接弹出的,
那可以使用 move_to_element()进行操作
文件上传
直接定位file标签sendkeys绝对路径或者相对路径
调用js
execute_script
控制浏览器滚动条
利用js操作滚动条实现,但是selenium3中支持自动搜索页面,不需要再操作滚动条来检索标签元素,了解即可
js="var q=document.documentElement.scrollTop=10000"
driver.execute_script(js)
time.sleep(2)
cookie操作
- get_cookies() 获得所有 cookie 信息
- get_cookie(name) 返回特定 name 有 cookie 信息
- add_cookie(cookie_dict) 添加 cookie,必须有 name 和 value 值
- delete_cookie(name) 删除特定(部分)的 cookie 信息
- delete_all_cookies() 删除所有 cookie 信息
获取对象的属性
#选择页面上所有的 tag name 为 input 的元素
inputs = driver.find_elements_by_tag_name('input')
#然后循环遍历出 data-node 为594434493的元素,单击勾选
for input in inputs:
if input.get_attribute('data-node') == '594434493':
input.click()
网友评论