包名: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)的更多相关文章

  1. Selenium2+python自动化17-JS处理滚动条

    前言 selenium并不是万能的,有时候页面上操作无法实现的,这时候就需要借助JS来完成了. 常见场景: 当页面上的元素超过一屏后,想操作屏幕下方的元素,是不能直接定位到,会报元素不可见的. 这时候 ...

  2. Selenium2+python自动化23-富文本(自动发帖)

    前言 富文本编辑框是做web自动化最常见的场景,有很多小伙伴遇到了不知道无从下手,本篇以博客园的编辑器为例,解决如何定位富文本,输入文本内容 一.加载配置 1.打开博客园写随笔,首先需要登录,这里为了 ...

  3. Selenium2+python自动化24-js处理富文本(带iframe)

    前言 上一篇Selenium2+python自动化23-富文本(自动发帖)解决了富文本上iframe问题,其实没什么特别之处,主要是iframe的切换,本篇讲解通过js的方法处理富文本上iframe的 ...

  4. Selenium2+python自动化7-xpath定位

    前言 在上一篇简单的介绍了用工具查看目标元素的xpath地址,工具查看比较死板,不够灵活,有时候直接复制粘贴会定位不到.这个时候就需要自己手动的去写xpath了,这一篇详细讲解xpath的一些语法. ...

  5. Selenium2+python自动化13-Alert

    不是所有的弹出框都叫alert,在使用alert方法前,先要识别出它到底是不是alert.先认清楚alert长什么样子,下次碰到了,就可以用对应方法解决.alert\confirm\prompt弹出框 ...

  6. Selenium2+python自动化28-table定位

    前言 在web页面中经常会遇到table表格,特别是后台操作页面比较常见.本篇详细讲解table表格如何定位. 一.认识table 1.首先看下table长什么样,如下图,这种网状表格的都是table ...

  7. selenium2 python自动化测试实战(回归测试)

    selenium2 python自动化测试实战 最近接手商城的项目,针对后台测试,功能比较简单,但是流程比较繁多,涉及到前后台的交叉测试.在对整个项目进行第一轮测试完成之后,考虑以后回归测试任务比较重 ...

  8. Selenium2+python自动化43-判断title(title_is)

    From: https://www.cnblogs.com/yoyoketang/p/6539117.html 前言 获取页面title的方法可以直接用driver.title获取到,然后也可以把获取 ...

  9. Selenium2+python自动化54-unittest生成测试报告(HTMLTestRunner)

    前言 批量执行完用例后,生成的测试报告是文本形式的,不够直观,为了更好的展示测试报告,最好是生成HTML格式的. unittest里面是不能生成html格式报告的,需要导入一个第三方的模块:HTMLT ...

  10. Selenium2+python自动化61-Chrome您使用的是不受支持的命令行标记:--ignore-certificate-errors

    前言 您使用的是不受支持的命令行标记:--ignore-certificate-errors.稳定性和安全性会有所下降 selenium2启动Chrome浏览器是需要安装驱动包的,但是不同的Chrom ...

随机推荐

  1. c# MySqlHelper_ExecuteSqlTran

    using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Text;u ...

  2. Java面试常考------------------------垃圾收集算法

    对于Java系学生而言,Java虚拟机中的垃圾收集算法是一个很重要的面试考点. 常用的垃圾收集算法主要可划分为以下三类: 1. 标记-清除算法 标记清除算法是一种比较简单的方法,直接标记内存中待回收的 ...

  3. javascript事件冒泡

    1. 事件 在浏览器客户端应用平台,基本生都是以事件驱动的,即某个事件发生,然后做出相应的动作. 浏览器的事件表示的是某些事情发生的信号.事件的阐述不是本文的重点,尚未了解的朋友,可以访问W3scho ...

  4. (转载)Oracle10g 数据泵导出命令 expdp 使用总结(二)

    原文链接:http://hi.baidu.com/edeed/item/2c454cff5c559f773d198b94 Oracle10g 数据泵导出命令 expdp 使用总结(一) 1.1.2 e ...

  5. php七牛批量删除空间内的所有文件方法

    相信大家都在使用七牛的免费云存储服务的同时,有清空七牛云存储镜像文件或者批量删除七牛云空间文件的需求,该怎么做?官方的工具好像并没有提供批量删除的功能,七牛云官方给出的建议是删除空间,再新建一个这样太 ...

  6. 关于shiro权限管理的一些总结

    项目中最近开发用到了shiro,shiro作为一款轻量级的权限管理框架,在项目中主要想管理用户的登陆之后的页面访问,按钮,数据的显示.主要借用了shiro自己的页面权限标签. 当用户登录时->先 ...

  7. mysql中exists、not exists的用法

    exists 关键字是判断是否存在的,存在则返回true,不存在则返回false, not exists则是不存在时返回true,存在返回false: 1. 最常用的if not  exists用法: ...

  8. Linux 密钥验证

    服务端配置puttygen 生成公钥,保存私钥复制公钥,写入服务端mkdir /root/.sshvi /root/.ssh/authorized_keys 生成文件,将公钥写入到文件中chmod 7 ...

  9. voa 2015 / 4 / 19

      potentially – adv. capable of becoming real, a possibility tackle – v. to deal with a difficult pr ...

  10. Python如何实现单步调试

    遇到大型python项目,如何定位问题和监控程序的运行状态是一个程序员必须掌握的技能,今天小编为你带来python程序的单步调试方法,方便易用,简单易记! 首先你需要在所调试程序的开头中:import ...