selenium介绍和基础命令

Selenium版本介绍:
Selenium1.0主要由三部分组成,分别是:
(1)Selenium IDE Firefox的一个插件,实现浏览器的录制、回放;
(2)Selenium Grid 在多台机器和异构环境中同时运行测试用例;
(3)Selenium RC 典型的CS架构,是1.0版本的核心支柱,RC是通过运行嵌入在浏览器中JavaScript应用,使用浏览器内置的JS翻译器来翻译selenese(selenium命令集合)命令,RC支持多种语言编写测试脚本,RC的服务器作为代理 服务器去访问应用,达到测试目的。RC中包含两部分:
1)Selenium libraries 编写测试脚本,用来控制selenium server的库(eg:API等)
2)Selenium server 负责控制浏览器行为,包含三方面:
① Launcher 启动浏览器,把selenium core 加载到浏览器界面中,并把浏览器的代键设置为selenium server中的HTTP proxy,浏览器会使用自带的javaScript翻译器来执行selenium命令;
② HTTP proxy(代理) 拦截server请求,并对命令进行分析后传给selenium core;
③ selenium core 将分析后的命令加载到JavaScript界面,JS界面是一对JavaScript命令集合,通过调用这些函数,才可以对浏览器进行操作。
Selenium2.0=Selenium1.0+webdriver
Selenium2.0中主推webdriver, 希望让其成为1.0中RC的替代品,因为selenium为了保持向下的兼容性,在2.0中并没有完全抛弃selenium RC.
Webdriver的特点:webdriver是通过原生浏览器支持或者浏览器扩展来直接控制浏览器。Webdriver针对浏览器而开发,取代了被嵌入到web应用中的JavaScript。和调用JS相比,webdriver效率更高,更安全。
Selenium3.0
3.0中只是将Firefox的驱动独立化,功能和3.0大致相同。
Selenium安装过程:
1.在线安装:cmd中使用pip或pip3命令,pip install selenium,若要安装指定版本应在selenium后加上对应版本号,否则默认最新版。
2.离线安装:将安装包下载解压后,在cmd中cd到安装包对应位置,执行python setup.py install即可完成安装。
在pip安装过程中,setuptools的作用是在python文件夹内的lib中有site_packages文件夹,该文件夹有各种python已经安装的命令库。
Firefox中的selenium IDE插件
实现浏览器录制、回放(IDE录制不能太复杂)
Base URL是指起始录制的URL
Play entire test suite 查看录制内容
File→export test case as→python2/unittest/webdriver 保存录制内容
Driver.get(“URL”)中的URL要以http://开头
Send.keys(“”)只能用于输入框
获取位置点的七种方式:
以百度搜索首页中搜索框为例,各属性值如下:

1.通过ID查找:
建议优先使用ID查找,因为在界面中ID一般是惟一的
语句:find_element_by_id(“”)

2.通过name查找:
语句:find_element_by_name(“”)

3.通过class查找:若class属性值中间有空格,则不能使用此定位方式
语句:find_element_by_class_name(“”)

4.通过driver.find_element_by_link_text(“”)
没有id,class,name等属性时可考虑此方法,但是用此方法查找需要满足两个条件:有a标签;有href属性且属性值必须为链接。即此方法的目标必须为可点击的文字。以百度首页中新闻为例:

5.通过find_element_by_partial_link_text(“”)
此方法和driver.find_element_by_link_text(“”)所需条件相同,但支持部分关键字查找定位(但要保证部分文字在当前页面的唯一性)。
6.find_element_by_xpath()分为绝对路径和相对路径两种查找方式
在没有id,name,class等属性,也不是可点击文字时,可考虑此方法
1)绝对路径:
以”/”从根节点html开始,逐层找到目标位置,若一个节点下方有多个相同的子节点,应在子节点名称后加[],[]内标明该节点的位置索引,注意位置索引从1开始而不是0,还是以百度搜索首页中搜索框为例:
绝对路径如下:当直接查看路径较复杂时,可选择查看器查看

2)相对路径:
到具有特殊属性的某一上级(不需要从根节点html开始),以”//”开始,定位到该上级处(用该位置具有的属性来定位,eg:”//form[@id=’form’]”或”//form[@class_name=’fm’]”),然后再逐层向下级定位
注意:若某上级的属性值不唯一,可使用and多个条件去锁定
Eg:从input上方某一级使用相对路径锁定输入框位置

7.find_element_by_css_selector(“”)
css和xpath一样,也分为绝对路径和相对路径
1)绝对路径
从html开始,用空格或>来区分层级结构,逐层定位目标位置,以百度首页搜索框为例,语句如下:

2)相对路径:
若上层某标签有id或class可使用find_element_by_css_selector(“#id”)或find_element_by_css_selector(“.class”)直接定位到上层标签处,其中#和id,.和class是一一对应的,无法混淆使用。
没有id,class等属性时可使用其他属性,例如find_element_by_css_selector(“input[maxlength=’255’]”),如果该属性不是唯一值可通过多个属性查找find_element_by_css_selector(“input[id=’kw’][name=’wd’]”)

css和xpath的异同:
相同点:
① 都是针对没有唯一或特殊属性的位置点,无法直接定位时,通过上级逐层查找至目标点。
② 方法相同,都具有绝对路径和相对路径两种方式
不同点:
① 调用时语法不同,即对应的API不同
② 相对位置调用规则不同,xpath对子元素进行分类,定位时需标明子元素名称和该元素在同类中的位置;而css没有对子元素分类,定位时只需标明该元素在所有类型子元素中的的位置。
③ 原理不同,css实现的是匹配对象的原理,xpath实现的是遍历的原理
常见浏览器控制命令
driver,back() 浏览器回退至上一页
driver.forward() 浏览器前进至下一页
driver.refresh() 刷新浏览器
driver.set_window_size() 设置窗口大小
driver.maximize_window() 最大化当前窗口
对目标点一些常用API
.clear() 清除文本框内容
.size 获取目标点尺寸
.text 获取位置点文本信息
.get_attribute(“m”) 获取m属性对应的值
.is_display() 某个位置点是否已加载显示?返回值为true or false
设置脚本休眠时间
为防止浏览器速度与代码执行速度不匹配导致程序出现bug,可人为给程序设定休眠时间:
Import time
Time.sleep(n) 其中n以秒为单位

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值