一、定位元素
定位单个元素 |
定位一组元素 |
说明 |
find_element_by_id() |
find_elements_by_id() |
- |
find_element_by_name() |
find_elements_by_name() |
- |
find_element_by_class_name() |
find_elements_by_class_name() |
- |
find_element_by_tag_name() |
find_elements_by_tag_name() |
- |
find_element_by_link_text() |
find_elements_by_link_text() |
- |
find_element_by_partial_link_text() |
find_elements_by_partial_link_text() |
- |
find_element_by_xpath() |
find_elements_by_xpath() |
- |
find_element_by_css_selector() |
find_elements_by_css_selector() |
- |
方法 |
说明 |
find_element() |
通用方法,有两个参数。第一个参数取值类型有By.ID、By.NAME、By.CLASS_NAME、By.TAG_NAME、By.LINK_TEXT、By.PARTIAL_LINK_TEXT、By.XPATH、By.CSS_SELECTOR,第二个参数跟上相应的参数值。WebDriver更推荐前面介绍的写法。
|
二、页面方法
(一)浏览器控制
方法 |
说明 |
方法 |
说明 |
webdriver.Chrome() |
加载驱动 |
.get(url) |
打开页面 |
.close() |
关闭窗口 |
quit() |
退出浏览器 |
.maximize_window() |
窗口最大化 |
.set_window_size(width, height) |
设置窗口大小 |
.back() |
后退 |
.title |
获取title |
.forward() |
前进 |
.current_url |
获取url |
.refresh() |
刷新 |
.get_screenshot_as_file(本地路径) |
截屏保存 |
.clear() |
清除文本 |
.send_keys(value) |
模拟输入 |
.submit() |
提交表单 |
.text |
获取文本信息 |
.click() |
单击 |
.radint() |
生成随机数 |
(二)鼠标事件
.perform()用于执行所有ActionChains类提供的鼠标方法。
方法 |
说明 |
方法 |
说明 |
.context_click(obj) |
右击 |
.double_click(obj) |
双击 |
.drag_and_drop(obj1,obj2) |
拖动 |
.move_to_element(obj) |
鼠标悬停 |
*这四个方法需与.perform()方法一起使用,才能生效。例: xxx.context_click(obj).perform()。
(三)元素等待
- 显式等待
WebDriverWait(driver,timeout,frequency=0.5,ignored_exceptions=None).until_not(expected_conditions.presence_of_element_located((By.ID,"kw")))
也可以搭配until
方法使用。
expected_conditions类提供的预期条件判断的方法
- 隐式等待
driver.implicitly_wait(秒)
- 线程等待
sleep(秒)
(四)driver.switch_to方法
方法 |
说明 |
方法 |
说明 |
.switch_to.frame(id/name /obj) |
切换表单 |
.switch_to.window(name/ handle) |
切换窗口 |
.switch_to.parent_frame |
跳至上一级表单 |
.current_window_handle |
返回当前窗口句柄 |
.switch_to.default_content() |
跳回最外层页面 |
.window_handles |
返回所有窗口的句柄 |
.switch_to.alert |
切换到警告框 |
.switch_to.active_element |
切换至焦点对象 |
.accept() |
确定警告框 |
.dismiss() |
取消警告框 |
.text |
获取警告框文本 |
.send_keys(value) |
向警告框发送文本 |
.authenticate(username, password) |
登录认证 |
三、Cookie处理
方法 |
说明 |
方法 |
说明 |
.get_cookies() |
获取全部cookie |
.get_cookie(name) |
返回字典的key为name的cookie信息 |
.delete_cookie(name) |
删除指定cookie |
.add_cookie(dict) |
添加cookie的字典对象{'name':'value1','value':'value2'} |
.delete_all_cookies() |
删除所有cookie |
四、执行JavaScript脚本
driver.execute_scripts(
js
)
JavaScript代码 |
说明 |
window.scrollTo(左边距,上边距) |
设置滚动条的水平和垂直位置 |
window.scrollTo(0, document.body.scrollHeight); |
滚动条拉到最底部 |
var obj=document.getElementById('text'); obj.value='text'; |
代替send_keys(value)操作 |
document.getElementsByTagName("video").pause() |
测试HTML5视屏 |
五、文件上传/下载
- 上传文件
driver.find_element_by_name("file").send_keys("D:\\upload_file.txt")
- 下载文件
import os
from selenium import webdriver
fp = webdriver.FirefoxProfile()
fp.set_preference("browser.download.folderList",2)
fp.set_preference("browser.download.manager.showWhenStarting",False)
fp.set_preference("browser.download.dir", os.getcwd())
fp.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/octet-stream")
browser = webdriver.Firefox(firefox_profile=fp)
browser.get("http://pypi.python.org/pypi/selenium")
browser.find_element_by_partial_link_text("selenium-2").click()
六、键盘事件
send_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+(Ctrl+A)) |
send_keys(Keys.F1) |
键盘F1 |
…… |
send_keys(Keys.F12) |
键盘F12 |