python3+selenium常用语法汇总
Selenium常用语法总结
一、Selenium常用定位语法
1.元素定位
(1)ID定位元素:
find_element_by_id(‘’)
(2)通过元素的类名称定位元素:
find_element_by_class_name(‘’)
(3)通过元素的html中的位置定位元素:
find_element_by_xpath(‘’)
xpath语法详见:https://www.runoob.com/xpath/xpath-tutorial.html
(4)通过元素的标签名称定位元素:
find_element_by_tag_name(‘’)
(5)通过元素的css定位元素:
find_element_by_css_selector(‘’)
css选择器语法详见:https://www.cnblogs.com/yuangushidai/p/10401713.html
(6)通过元素的名定位元素:
find_element_by_name(‘’)
(7)通过元素的链接名称定位元素:
find_element_by_link_text(‘’)
(8)通过元素的部分链接名称定位元素:
find_element_by_partial_link_text(‘’)
2.元素操作
(1)driver.find_element_by_id(‘’).click() #点击
(2)driver.find_element_by_id(‘’).send_keys(“123456”) #输入
(3)driver.find_element_by_id(‘’).clear()
或者如下:
ele = driver.find_element_by_id(‘’)
ele.clear()
ele.send_keys(‘’)
ele.click()
3,页面操作
打开网页:driver.get("https://www.baidu.com")
关闭网页:driver.close()
在输入框中输入内容:send_keys(“”)
清空输入框中的内容:text.clear()
获取输入框中的内容:get_attribute(‘value’)
刷新页面:driver.refresh()
页面前进后退:
driver.forward()
driver.back()
4.下拉选择框
先引入下面的包:
from selenium.webdriver.support.ui import Select
(1)选择列表:
select_by_index(self, index) #以index属性值来查找匹配的元素并选择;
select_by_value(self, value) #以value属性值来查找该option并选择;
select_by_visible_text(self, text) #以text文本值来查找匹配的元素并选择;
first_selected_option(self) #选择第一个option 选项 ;
(2)清除选择列表
deselect_by_index(self, index)#以index属性值来查找匹配的元素并取消选择;
deselect_by_value(self, value)#以value属性值来查找该option并取消选择;
deselect_by_visible_text(self, text)#以text文本值来查找匹配的元素并取消选择;
deselect_all(self) #将所有选择清除;
(3)选项
options #以列表形式返回属于此select标签的所有option
all_selected_options #全部选择了的option的列表
first_selected_option #第一个被选中的option元素如果select没有multiple值,此时获取值为当前选择的option
(4)用法如下:
eleTime = Select(Driver.find_element_by_id('cc_start_time'))通过find定位好select元素后面进行选择操作
eleTime.select_by_value() 等
5.单选框
radio=driver.find_element_by_id("BookMode")
radio.click() #选择某个单选项
radio.clear() #清空某个单选项
radio.isSelected() #判断某个单选项是否已经被选择
6.多选框
checkbox = driver.find_element_by_id("myCheckbox")
checkbox.click()
checkbox.clear()
checkbox.isSelected() ##判断是否选中
7.弹出对话框
driver.switch_to_alert().text #获取弹出框信息
driver.switch_to_alert().accept() #接受警告(等于点了个确定)
driver.switch_to_alert().dismiss() #不接受警告(等于点了个取消)
driver.switch_to_alert().send_keys(“hello”) #给警告框输入内容
用法如下:
driver.find_element_by_xpath("//*[@id='gxszButton']/a").click()
driver.switch_to_alert().dismiss() #解散该警告框
driver.switch_to_alert().accept() #确认
texts = dirver.switch_to_alert().text()#获取弹出框文本
print(text)
8.表单
approve = driver.find_element_by_id("approve")
approve.submit() //只适合于表单的提交
或者
driver.find_element_by_id("approve").submit()
9.上传文件
上传文件的元素操作:
adFileUpload =driver.find_element_by_id("WAP-upload")
filePath = "C:\test\\uploadfile\\media_ads\\test.jpg"
adFileUpload.sendKeys(filePath)
10.调用js
Web driver对Java Script的调用是通过JavascriptExecutor来实现的,例如:
js1 = 'document.getElementById("su").click();'
Driver.execute_script(js1)
10.超时设置
(1)强制等待 sleep(xx),不建议总用这种等待方式,太死板,严重影响程序执行速度
time.sleep(5)
(2)隐性等待implicitly_wait(xx),隐性等待对整个driver的周期都起作用,所以只要设置一次即可
Driver.implicitly_wait(10)
(3) 显性等待WebDriverWait,配合该类的until()和until_not()方法,就能够根据判断条件而进行灵活地等待
需要调用库如下:
from selenium.webdriver.support.wait import WebDriverWait
WebDriverWait(driver, 超时时长, 调用频率, 忽略异常).until(可执行方法, 超时时返回的信息)
例子:
WebDriverWait(driver,30).until(lambdax:x.find_element_by_id("kw")).send_keys("sky")
二、Selenium常用鼠标操作
鼠标操作需导入下面的包:
from selenium.webdriver.common.actionchains import ActionChains
常用鼠标操作事件:
click(on_element=None) #单击鼠标左键
click_and_hold(on_element=None) #点击鼠标左键,按住不放
context_click(on_element=None) #点击鼠标右键
double_click(on_element=None) #双击鼠标左键
drag_and_drop(source, target) #拖拽到某个元素然后松开
drag_and_drop_by_offset(source, xoffset, yoffset) #拖拽到某个坐标然后松开
move_by_offset(xoffset, yoffset) #鼠标移动到距离当前位置(x,y)
move_to_element(to_element) #鼠标移动到某个元素
move_to_element_with_offset(to_element, xoffset, yoffset) #将鼠标移动到距某个元素多少距离的位置
release(on_element=None) #在某个元素位置松开鼠标左键
perform() #执行链中的所有动作
用法如下:
先定位要操作的元素,在执行鼠标操作
Right_click = driver.find_element_by_id(‘’)
ActionChains(driver).context_click(right_click).perfor
鼠标移动、拖拽详细操作参见:
https://www.cnblogs.com/mengyu/p/6901489.html
三、Selenium常用键盘操作
1.在使用键盘操作前需导入Key包,如下;
from selenium.webdriver.common.keys import Keys
常用按键有:
回车键 Keys.ENTER
删除键 Keys.BACK_SPACE
空格键 Keys.SPACE
制表键 Keys.TAB
回退键 Keys.ESCAPE
刷新键 Keys.F5
2.常用的组合键有:
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)
3.其他按键详见Keys包与键盘按键对应表
四、常用技巧:
1.冻结浏览器:setTimeout(()=>{debugger;},8000) 针对浮动变化元素定位
2.页面跳转:
(1)driver.switch_to.window(driver.window_handles[-1]) # 将标签对象变为新页面标签、新网址新标签页面书刷新
将处理对象变为新标签页面,否则浏览器操作对象会找不到要操作页面中的元素
(2)sreach_window = Driver.current_window_handle
这一句会切换到新url对象,如果不写这句,浏览器对象会去原来url页面中,找元素操作,这时候我们希望操作的元素找不到就会报错
3.frame切换
当你发现定位方法没问题,但定位不到元素时,该元素可能是存在于frame中,你需要先切入frame后再定位元素
(1)switch_to.frame 切入frame
(2)switch_to_default_content() 切回主页面(切出frame)
用法如下:
driver.switch_to.frame(self.driver.find_element_by_xpath('//*[@id="x-URS-iframe"]'))
五、浏览器及驱动下载地址
浏览器驱动下载地址:
chromedriver驱动下载地址:
http://chromedriver.storage.googleapis.com/index.html
geckodriver驱动下载地址:
https://github.com/mozilla/geckodriver/releases
iedriverserver驱动下载地址:
http://selenium-release.storage.googleapis.com/index.html
firefox下载地址
http://ftp.mozilla.org/pub/firefox/releases/
chrome下载地址:
https://www.slimjet.com/chrome/google-chrome-old-version.php
注意:
1.firefox56以下不需要安装webdriver驱动,firefox57(firefox47及以上版本)需要安装geckodriver-v0.19.1-win32/64。
2.IEDriverServer的版本号和Selenium的版本号一定要一致
六、附表
键盘操作:
Keys包与键盘按键对应表
NULL = '\ue000'
CANCEL = '\ue001' # ^break
HELP = '\ue002'
BACKSPACE = '\ue003'
BACK_SPACE = BACKSPACE #删除键
TAB = '\ue004' #TAB键
CLEAR = '\ue005'
RETURN = '\ue006'
ENTER = '\ue007' #回车键
SHIFT = '\ue008' #Shift键
LEFT_SHIFT = SHIFT
CONTROL = '\ue009'
LEFT_CONTROL = CONTROL #Ctrl 键
ALT = '\ue00a' #Alt 键
LEFT_ALT = ALT
PAUSE = '\ue00b'
ESCAPE = '\ue00c' #ECS键
SPACE = '\ue00d' #空格键
PAGE_UP = '\ue00e' #PgUp 键
PAGE_DOWN = '\ue00f' #PgDwon 键
END = '\ue010' #END 键
HOME = '\ue011' #HOME 键
LEFT = '\ue012' #左键
ARROW_LEFT = LEFT
UP = '\ue013' #上键
ARROW_UP = UP
RIGHT = '\ue014'
ARROW_RIGHT = RIGHT #右键
DOWN = '\ue015' #下键
ARROW_DOWN = DOWN
INSERT = '\ue016' #insert键
DELETE = '\ue017' #del键
SEMICOLON = '\ue018' #';'键
EQUALS = '\ue019' #'='键
#数字键盘
NUMPAD0 = '\ue01a' # number pad
keys
NUMPAD1 = '\ue01b'
NUMPAD2 = '\ue01c'
NUMPAD3 = '\ue01d'
NUMPAD4 = '\ue01e'
NUMPAD5 = '\ue01f'
NUMPAD6 = '\ue020'
NUMPAD7 = '\ue021'
NUMPAD8 = '\ue022'
NUMPAD9 = '\ue023'
MULTIPLY = '\ue024' # '*' 键
ADD = '\ue025' # '+' 键
SEPARATOR = '\ue026' #','键
SUBTRACT = '\ue027' # '-' 键
DECIMAL = '\ue028' # '.'键
DIVIDE = '\ue029' #'/'键
F1 = '\ue031' # function keys
F2 = '\ue032'
F3 = '\ue033'
F4 = '\ue034'
F5 = '\ue035'
F6 = '\ue036'
F7 = '\ue037'
F8 = '\ue038'
F9 = '\ue039'
F10 = '\ue03a'
F11 = '\ue03b'
F12 = '\ue03c'
META = '\ue03d'
COMMAND = '\ue03d'
--------------------------------
此文借鉴多篇博客,愚此拜谢
借鉴处文中已经说明来源,如有侵权,立删!
python3+selenium常用语法汇总的更多相关文章
- Angular学习资料大全和常用语法汇总(让后端程序员轻松上手)
前言: 首先为什么要写这样的一篇文章呢?主要是因为前段时间写过一些关于Angualr的相关实战文章,有些爱学习的小伙伴对这方面比较感兴趣,但是又不知道该怎么入手(因为认识我的大多数小伙伴都是后端的同学 ...
- sql 常用语法汇总
Sql常用语法 SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控 ...
- java selenium常用API汇总
(WebElement.iFrame.select.alert.浏览器窗口.事件.js) 一 WebElement相关方法 1.点击操作 WebElement button = driver. ...
- 【Linq】常用语法汇总
语言继承查询(Language Integrated Query, LINQ),在C#编程语言中集成了查询语法,可以用相同的语法访问不同的数据源,LINQ提供了不同数据源的抽象层,所以可以使用相同语法 ...
- Selenium常用操作汇总二——如何把一个元素拖放到另一个元素里面(转)
Q群里有时候会有人问,selenium webdriver怎么实现把一个元素拖放到另一个元素里面.这一节总一下元素的拖放. 下面这个页面是一个演示拖放元素的页面,你可以把左右页面中的条目拖放到右边的 ...
- Selenium常用操作汇总二——如何操作select下拉框
下面我们来看一下selenium webdriver是如何来处理select下拉框的,以http://passport.51.com/reg2.5p这个页面为例.这个页面中有4个下拉框,下面演示4种选 ...
- Selenium常用操作汇总二——如何操作cookies(转)
Web 测试中我们经常会接触到Cookies,一个Cookies主要属性有”所在域.name.value.有效日期和路径",下面来讲一下怎么操作Cookies. import java.ut ...
- Selenium常用操作汇总二——如何处理alert、confirm、prompt对话框
alert.confirm.prompt这样的js对话框在selenium1.X时代也是难啃的骨头,常常要用autoit来帮助处理. 试用了一下selenium webdriver中处理这些对话框十分 ...
- Selenium常用操作汇总二——如何得到弹出窗口
在selenium 1.X里面得到弹出窗口是一件比较麻烦的事,特别是新开窗口没有id.name的时候.当时还整理了处理了几种方法,详见:http://seleniumcn.cn/read.php?ti ...
随机推荐
- pro git学习笔记
- 浅谈MySQL存储引擎选择 InnoDB还是MyISAM
如果是一些小型的应用或项目,那么MyISAM 也许会更适合.当然,在大型的环境下使用MyISAM 也会有很大成功的时候,但却不总是这样的.如果你正在计划使用一个超大数据量的项目,那么你应该直接使用In ...
- swiper保存
//初始化swiper var index=0; if(sessionStorage.getItem("index")){ index=sessionStorage.getItem ...
- python之sys._getframe() 用于查看函数被什么函数调用以及被第几行调用及被调用函数所在文件
import sys def get_cur_info(): print(sys._getframe().f_code.co_filename) # 当前文件名,可以通过__file__获得 prin ...
- 16. ClustrixDB Rebalancer
管理平衡 Clustrix Rebalancer被设计成自动作为后台进程运行,以便跨集群重新平衡数据.介绍如何配置和监视rebalancer,但是大多数部署不需要用户干预. Rebalancer主要通 ...
- php使用ob缓存来实现动态页面静态化
php7中的php.ini 默认开启 output_buffering = 4096 例子: <?phpinclude_once 'common/common.php';//数据库操作方法 $f ...
- C# 自定义类中括号取值 测试
public class ABC : Hashtable{} static class Program { public static ABC a= new ABC(); static void Ma ...
- jquery last 选择器 语法
jquery last 选择器 语法 作用: :last 选择器选取最后一个元素.最常见的用法:与其他元素一起使用,选取指定组合中的最后一个元素(就像上面的例子). 语法:$(":last& ...
- 2019hdu多校 Minimal Power of Prime
题目链接:Click here 题目大意:求一个数分解质因数后的最小幂指数 Solution: 首先,我们肯定是不能直接暴力求解的 我们先考虑筛出1e4范围以内的所有质数,把x所有这个范围内的质因子筛 ...
- 3-Gitblit服务器搭建及IDEA整合Git使用
背景:虽然有GitHub.GitLab这样强大的Git仓库,但是涉及私有Git库要收费,所以自己动手搭建免费的用用 环境:windows 7 旗舰版.JDK 1.8.IDEA 2017 ------- ...