Python+selenium常用方法(Webdriver API)
小编整理了目前学习的Python+selenium常用的一些方法函数,以后有新增再随时更新。
加载浏览器驱动: webdriver.Firefox()
打开页面:get()
关闭浏览器:quit()
最大化窗口: maximize_window()
设置窗口参数:set_window_size(600,800)
后退到前一页: back()
前进到后一页: forward()
刷新页面: refresh()
元素定位:
- id定位:find_element_by_id()
- name定位:find_element_by_name()
- class定位:find_element_by_class()
- tag定位:find_element_by_tag_name()
- link定位:find_element_by_link_text()
- partial link 定位: find_element_by_partial_link_text()
- Xpath定位:
- 绝对路径:find_element_by_xpath("绝对路径")
- 元素属性:find_element_by_xpath("//unput[@id='kw']")
- 层级与属性结合:find_element_by_xpath("//form[@id='loginForm']/ul/input[1]")
- 逻辑运算符:find_element_by_xpath("//input[@id='kw' and@class='s_ipt']")
- CSS定位:find_element_by_css_selector()
|
选择器 |
例子 |
描述 |
|
.class |
.intro |
Class选择器,选择class=“intro”的所有元素 |
|
#id |
#firstname |
Id选择器,选择id=“firstname”的所有元素 |
|
* |
* |
选择所有元素 |
|
Element |
P |
元素所有<p>元素 |
|
Element>element |
div>input |
选择父元素为<div>元素之后的所有<input>元素 |
|
Element+element |
Div+input |
选择同一级中紧接在<div>元素之后的所有<input>元素 |
|
[attribute=value] |
[target=_blank] |
选择target=”_blank”的所有元素 |
10.清除文本:clear()
11.模拟按键输入:send_keys(*value)
12.单击元素:click()
13.提交表单(相当于"回车"):submit()
14.鼠标事件:
ActionChains 类提供了鼠标操作的常用方法:
- perform():执行所有ActionsChains中存储的行为
- context_click():右击
- double_click():双击
- drag_and_drop():拖动
- move_to_element():鼠标悬停
Python代码:
# 引入ActionChains类
from selenium.webdriver.common.action_chains import ActionChains
# ......
# 定位到要右击的元素
element=driver.find_element_by_css_selector("#kw")
#右击操作
ActionChains(driver).context_click(element).perform()
# ......
15.键盘事件:
|
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 |
Python代码:
# 引入Key模块
from selenium.webdriver.common.keys import Keys
# ......
# ctrl+a全选输入框内容
driver.find_element_by_css_selector("#kw").send_keys(Keys.CONTROL,'a')
# ......
16.元素等待:
(1)显示等待
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# ......
element=WebDriverWait(driver,5,0.5).until(EC.presence_of_element_located((By.ID,'kw')))
# ......
(2)隐式等待
from selenium.common.exceptions import NoSuchElementException
# ......
drive.implicitly_wait(10)
# ......
17.定位一组元素:
- find_elements_by_id()
- find_elements_by_name()
- find_elements_by_class()
- find_elements_by_tag_name()
- find_elements_by_link_text()
- find_elements_by_partial_link_text()
- find_elements_by_xpath()
- find_elements_by_css_selector()
# 通过tag name定位元素:driver.find_elements_by_tag_name('option')[1].click()
# 通过xpath定位元素:
driver.find_elements_by_xpath("//input[@type='checkbox']")
# 通过css定位元素:
driver.find_elements_by_css_selector('input[type=checkbox]')
# 使用selector:
slector=Select(driver.find_element_by_css_selector("[name='CookieDate']"))
slector.select_by_index(1)
# slector.select_by_visible_text("留一年")
# slector.select_by_value("1")
18.多表单切换:switch_to.frame()
19.多窗口切换:switch_to.window()
当前句柄:current_window_handle
所有句柄:window_handles
20.警告框处理:switch_to_alert()
- text:返回所有alert/confirm/prompt中的文字信息
- accept():接受现有警告框
- dismiss():解散现有警告框
- send_keys(keysToSend):发送文本至警告框
21.文件上传:send_keys()
driver.find_element_by_css_selector(".uploadpic").send_keys(r'E:\picture\s.png')
22.cookie处理:
- get_cookies():获得所有cookie信息
- get_cookie(name):返回字典的key为“name”的cookie信息
- add_cookie(cookie_dict):添加cookie。“cookie_dict”指字典对象,必须有name和value值
- delete_cookie(name,optionsString):删除cookie信息。“name”是要删除的cookie的名称,“optionsString”是该cookie的选项,目前支持的选项包括“路径”,“域”
- delete_all_cookies():删除所有cookie信息
23.滚动条设置(2种方式):
# 使用scrollTop滑动到底部
js = "var action=document.documentElement.scrollTop=10000"
driver.execute_script(js)
# 使用scrollTo设置位置
driver.set_window_size(600, 600)
js = "window.scrollTo(100,450);"
driver.execute_script(js)
24.窗口截图:get_screenshot_as_file()
25.关闭窗口:close()
26.生成随机数:radint()
Python+selenium常用方法(Webdriver API)的更多相关文章
- Python+Selenium(webdriver常用API)
总结了Python+selenium常用的一些方法函数,以后有新增再随时更新: 加载浏览器驱动: webdriver.Firefox() 打开页面:get() 关闭浏览器:quit() 最大化窗口: ...
- <译>Selenium Python Bindings 6 - WebDriver API
本章涉及Selenium WebDriver的所有接口. Recommended Import Style 推荐的导入风格如下: from selenium import webdriver 然后,你 ...
- Selenium的WebDriver API元素定位中的XPath和CSS
元素的定位和操作是自动化测试的核心部分,其中操作又是建立在定位的基础上的. 浏览器的常规操作 import time from selenium import webdriver # 打开浏览器 dr ...
- Python Selenium 常用方法总结(不断补充)
还有此篇内容也丰富Selenium常见元素定位方法和操作的学习介绍 selenium Python 总结一些工作中可能会经常使用到的API. 1.获取当前页面的Url 方法:current_url 实 ...
- Python Selenium 常用方法总结
selenium Python 总结一些工作中可能会经常使用到的API. 1.获取当前页面的Url 方法:current_url 实例:driver.current_url 2.获取元素坐标 ...
- 转载——Python Selenium 常用方法总结
selenium Python 总结一些工作中可能会经常使用到的API. 1.获取当前页面的Url 方法:current_url 实例:driver.current_url 2.获取元素坐标 方法:l ...
- Python Selenium 之常用API
Selenium WebDriver下提供许多用来与浏览器.元素.鼠标.键盘.弹框.下拉菜单和列表的交互和设置方法.这些是计算机模拟人工进行自动化测试所必要依赖的方法.下面将用列表的方式总结出常用的A ...
- python+selenium中webdriver相关资源
Chrome chrome的webdriver : http://chromedriver.storage.googleapis.com/index.html chrome的webdriver需要对 ...
- selenium常用webdriver api汇总
1.driver.current_url:用于获得当前页面的URL 2.driver.title:用于获取当前页面的标题 3.driver.page_source:用于获取页面html源代码 4.dr ...
随机推荐
- Substring CodeForces - 919D
http://codeforces.com/problemset/problem/919/D 就是先判环,如果有环就-1,否则对每个字母分开跑一下dp 错误记录: 1.有向图判环,自环一定要特判!(不 ...
- Maxim Buys an Apartment CodeForces - 854B
题意:已知一条街上有n幢房子,依次的编号为1~n,其中有k幢已经卖出去了但是不知道是哪k幢.当且仅当一幢房子没有卖出去且其两旁至少有一幢房子卖出去了的时候,认为这幢房子是好的.问这n幢房子中好的房子最 ...
- 基于node 搭建http2服务
1.准备工作:安装node2.安装http2: npm install http2 -g安装完成后,在安装目录中appData/Roaming>npm>node_modules>ht ...
- 转-sql之left join、right join、inner join的区别
left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录inner join(等值连接) 只 ...
- VBScript(一)
visual basic Script 好像是以个老掉牙的服务器端脚本语言,低版本的IE浏览器支持在浏览器里执行 几个特点 1. 大小写不敏感 2.在服务器端 inputBox, msgBox不被支持 ...
- Android手机屏幕投射到电脑神器Vysor
做android开发的,经常要把手机屏幕投射到电脑,用来演示.普遍的解决方案是360或者豌豆荚的演示功能,缺点是延迟非常厉害,大概有3秒左右,非常影响演示效果.以下介绍Vysor,几乎0延迟,能与手机 ...
- ag-grid-vue的 行默认选中
that.$nextTick(() => { that.gridListOptions.api.onGroupExpandedOrCollapsed(); that.$nextTick(() = ...
- Redis学习笔记(二)字符串进阶
1.增减操作 字符串可以储存字节串.整数.浮点数三种类型的值,如果值无法被解释为十进制的整数或浮点数,那么对此值进行增减操作会返回错误,如果对一个不存在的或者保存了空串的键进行增减操作,Redis将当 ...
- JavaScript 声明全局变量与局部变量
一.JavaScript 声明全局变量的三种方式: 声明方式一: 使用var(关键字)+变量名(标识符)的方式在function外部声明,即为全局变量,否则在function声明的是局部变量.该方式即 ...
- 使用python书写的小说爬虫
1.写了一个简单的网络爬虫 初期1 (后期将会继续完善) #小说的爬取 import requests import random from bs4 import BeautifulSoup base ...