Selenium2 (python)
包名:selenium
支持浏览器:Firefox,InternetExplorerDriver,OperaDriver,Chrome(要使用一种浏览器应下载相应的driver驱动)
一、基本命令
dr = selenium.webdriver.Firefox() 打开浏览器;
dr.maximize_window() 最大化
dr.set_window_size(400,640) 设置浏览器大小;
dr.get("url") 打开网页;
dr.back() 后退;
dr.forward() 前进;
dr.current_url 获取当前url;
dr.current_window_handle 获得当前窗口;
dr.window_handles 获得所有窗口;
switch_to_window() 在多窗口之间切换;
dr.execute_script() 执行js脚本;
dr.quit() 退出浏览器;
二、元素定位
dr.find_element_by_id()
dr.find_element_by_name()
dr.find_element_by_class_name()
dr.find_element_by_tag_name()
dr.find_element_by_link_text()
dr.find_element_by_partial_link_text()
dr.find_element_by_xpath()
路径示例:"/html/body/div[2]/form/span/input"
通过id查找:"//input[@id=’input’]" 还可以用and,or进行多个属性联合查找,每个前都需@
能过上一级目录定位:"//span[@id=’input-container’]/input"
dr.find_element_by_css_selector()
三、css元素匹配规则
* 通过元素选择器,匹配任何元素;
E 标签选择器,匹配所有使用E标签的元素;
.info class选择器,匹配所有class属性中包含info的元素;
#footer id选择器,匹配所有id属性等于footer的元素;
E,F 多元素选择器,同时匹配所有E或F元素;
E F 后代元素选择器,匹配所有属于E元素后代的F元素;
E>F 子元素选择器,匹配所有E元素的子元素F
E+F 毗邻元素选择器,匹配紧随E元素之后的同级元素F(只匹配第一个)
E~F 同级元素选择器,匹配所有在E元素之后的同级F元素;
E[att='val'] 属性att值为val的E元素;
E[att^='val'] 属性att值以val开头的E元素;
E[att$='val'] 属性att值以val结尾的E元素;
E[att*='val'] 属性att值包含val的E元素;
E[att1='v1'][att2='v2'] att1和att2的同时定位;
E:contains('xxxx') 内容中包含xxxx的E元素;
E:not(s) 匹配不符合当前选择器的任何元素;
E:nth(n) 在其父元素中的E子元素集合中排在第n+1个E元素(例:css=ul>li:nth(0))
E:eq(n) 同上;
E:first 第一个;
E:last 最后一个;
E:even 偶数位元素;
E:odd 奇数位元素;
E:lt(n) 前n个元素;
E:gt(n) 排在n位之后的元素;
E:only-child 父元素的唯一一个子元素且标签为E;
E:empty 不包含任何子元素的E元素;
find_elements也可以上各种方法定位元素,主要用于批量操作对象,或者先获取一组对象,然后再从之中选择一个。
四、对已定位到元素(WebElement)的操作
click() 单击;
send_keys() 输入;还可发送模拟键盘事件,具体键存于selenium.webdriver.common.keys;
submit() 提交表单;
clear() 清除元素内容;
WebElement的一些属性:
size 尺寸;
text 元素文本;
get_attribute(name) 返回元素的属性值,可以是id,name,type或元素拥有的其它属性;
is_displayed() 元素是否用户可见;
五、鼠标操作(ActionChains)常用方法
context_click() 右击;
double_click() 双击;
drag_and_drop(source,target) 拖动;
move_to_element() 悬停在一个元素上;
click_and_hold() 左键点击一个元素且不释放;
例:ActionChains(driver).context_click(element).perform() perform()
六、alert/comfirm/prompt 等弹出框的处理
使用switch_to.alert() 方法定位到相应的框体;
然后使用以下方法执行相应的操作:
text 返回文字信息;
accept 确认;
dismiss 取消;
send_keys 输入值;
七、cookie处理
get_cookies() 获得所有cookie信息;
get_cookie(name) 返回特定name的cookie信息;
add_cookie(cookie_dict) 添加cookie;
delete_cookie(name) 删除指定cookie
delete_all_cookies() 删除所有cookie信息;
八、补充内容
常用js脚本:
var q=document.documentElement.scrollTop=0 将滚动条滑到最开始;
$("#tooltip").fadeOut(); 隐藏文字信息;
$(arguments[0]).fadeOut() 隐藏按钮;
implicitly_wait() 超时等待;
switch_to_frame() 切换主框架;
层级定位:可在一个find_element后再接一个.find_element,通过不同层级的两个元素来同时确定一个位置。
上传文件:
先通过定位打开本地弹出框,然后通过send_keys来传入本地文件路径就可以了;
Selenium2 (python)的更多相关文章
- Selenium2+python自动化17-JS处理滚动条
前言 selenium并不是万能的,有时候页面上操作无法实现的,这时候就需要借助JS来完成了. 常见场景: 当页面上的元素超过一屏后,想操作屏幕下方的元素,是不能直接定位到,会报元素不可见的. 这时候 ...
- Selenium2+python自动化23-富文本(自动发帖)
前言 富文本编辑框是做web自动化最常见的场景,有很多小伙伴遇到了不知道无从下手,本篇以博客园的编辑器为例,解决如何定位富文本,输入文本内容 一.加载配置 1.打开博客园写随笔,首先需要登录,这里为了 ...
- Selenium2+python自动化24-js处理富文本(带iframe)
前言 上一篇Selenium2+python自动化23-富文本(自动发帖)解决了富文本上iframe问题,其实没什么特别之处,主要是iframe的切换,本篇讲解通过js的方法处理富文本上iframe的 ...
- Selenium2+python自动化7-xpath定位
前言 在上一篇简单的介绍了用工具查看目标元素的xpath地址,工具查看比较死板,不够灵活,有时候直接复制粘贴会定位不到.这个时候就需要自己手动的去写xpath了,这一篇详细讲解xpath的一些语法. ...
- Selenium2+python自动化13-Alert
不是所有的弹出框都叫alert,在使用alert方法前,先要识别出它到底是不是alert.先认清楚alert长什么样子,下次碰到了,就可以用对应方法解决.alert\confirm\prompt弹出框 ...
- Selenium2+python自动化28-table定位
前言 在web页面中经常会遇到table表格,特别是后台操作页面比较常见.本篇详细讲解table表格如何定位. 一.认识table 1.首先看下table长什么样,如下图,这种网状表格的都是table ...
- selenium2 python自动化测试实战(回归测试)
selenium2 python自动化测试实战 最近接手商城的项目,针对后台测试,功能比较简单,但是流程比较繁多,涉及到前后台的交叉测试.在对整个项目进行第一轮测试完成之后,考虑以后回归测试任务比较重 ...
- Selenium2+python自动化43-判断title(title_is)
From: https://www.cnblogs.com/yoyoketang/p/6539117.html 前言 获取页面title的方法可以直接用driver.title获取到,然后也可以把获取 ...
- Selenium2+python自动化54-unittest生成测试报告(HTMLTestRunner)
前言 批量执行完用例后,生成的测试报告是文本形式的,不够直观,为了更好的展示测试报告,最好是生成HTML格式的. unittest里面是不能生成html格式报告的,需要导入一个第三方的模块:HTMLT ...
- Selenium2+python自动化61-Chrome您使用的是不受支持的命令行标记:--ignore-certificate-errors
前言 您使用的是不受支持的命令行标记:--ignore-certificate-errors.稳定性和安全性会有所下降 selenium2启动Chrome浏览器是需要安装驱动包的,但是不同的Chrom ...
随机推荐
- 深入理解Java虚拟机-----------虚拟机类加载机制
虚拟机类加载机制 类从被加载到虚拟机内存开始,到卸载出内存为止,整个生命周期包括:加载,验证,准备,解析,初始化,使用,卸载等7个阶段.其中,验证,准备,解析3个部分称为连接. 以上7个阶段中,加载, ...
- xhr.readyState的就绪状态
0:初始化,XMLHttpRequest对象还没有完成初始化 1:载入,XMLHttpRequest对象开始发送请求 2:载入完成,XMLHttpRequest对象的请求发送完成 3:解析,XMLHt ...
- mysql主从复制原理探索
上一篇文章里面,讲到了遇到mysql主从延迟的坑,对于这次的坑多说两句,以前也看过这样的例子,也知道不能够写完之后马上更新,但是真正开发的时候还是没有注意到这一点,道理大家都懂,但是还是会犯错,只有等 ...
- HTML应用程序(HTML App)
HTML应用程序(HTML App) 一个简单的 html app例子: <HTML><HEAD><TITLE>hta示例</TITLE><HTA ...
- win7 点IE浏览器无法打开
现象:win7系统 打开未响应, 装其他浏览器可以使用,但很慢,且有密码框输入不了 处理: WIN7删除添加程序中,选打开或关闭windows功能,其中就有IE11的勾选了, 然后清除勾选,即会出现提 ...
- 在Docker容器中运行.Net Core web Api项目
安装Docker环境 参考本人这篇<CentOS 7 下Docker的安装>文章进行安装以及环境配置,这里不做赘述. 通过.NetCore开发WebApi项目 1. 创建.Net Core ...
- RecyclerView线性分割线
由于recyclerview默认是没有分割线的,需要显示分割线的话,可以在布局里添加一条有背景色的View标签,或者通过ItemDecoration来实现,本文以后者为例. ItemDecoratio ...
- 二维坐标点排序(JavaScript)
今天给大家分享下最近web项目中出现的一个技术难点问题--坐标排序: 如下图所示,要求在前端页面上按顺序将下面5个模块的坐标依次保存至数据库 现在已知信息如下: 1.每个模块分别为一个div 2.每个 ...
- 如何快速轻松学习bootstrap
我以前也是通过看一些视频教程来学的,比如慕课网上的,比如51cto上的那些零基础入门bootstrap什么的,还有一些培训班里流传出来的,感觉晕乎乎的,不知所云. 还是在后面不断使用的过程中慢慢体会到 ...
- nopCommerce 3.9 大波浪系列 之 路由扩展 [多语言Seo的实现]
一.nop种的路由注册 在Global.asax,Application_Start()方法中会进行路由注册,代码如下. public static void RegisterRoutes(Route ...