什么是Selenium ?

Selenium 是一个浏览器自动化测试框架,它主要用于web应用程序的自动化测试,其主要特点如下:开源、免费;多平台、浏览器、多语言支持;对web页面有良好的支持;API简单灵活易于使用;支持分布式测试用例执行。

Selenium经历了两个版本,Selenium1.0和2.0,Selenium1.0主要由以下几部分构成:

  • Selenium IDE:是一个嵌入到Firefox中的插件,可以实现浏览器的录制于回放功能。

  • Selenium Grid:自动化测试辅助工具,可以很方便地同时在多台机器上并行运行多个测试事例。

  • Selenium RC:是Selenium的核心工具,支持多种不同的语言编写的测试脚本,通过Selenium RC的服务器作为代理服务器去访问应用从而达到测试的目的。主要分为以下两部分:

1.Client:用来编写测试脚本来控制Selenium server的库。

2.Server:负责控制浏览器的行为,包含三部分:Launcher;HttpProxy;Core。

明白了Selenium1.0的家族关系,Selenium2.0可以简单的认为是将WebDriver加入到了Selenium RC这一部分中去。那么Selenium RC和WebDriver有什么区别呢? RC和 WebDriver 类似,都可以看做是一套操作web页面的规范。当然,他们的工作原理不一样。

  • Selenium RC 在浏览器中运行 JavaScript 应用,使用浏览器内置的 JavaScript 翻译器来翻译和执行selenese 命令(Selenium 命令集合) 。WebDriver 通过原生浏览器支持或者浏览器扩展直接控制浏览器。

  • WebDriver 针对各个浏览器而开发,取代了嵌入到被测 Web 应用中的 JavaScript。与浏览器的紧密集成支持创建更高级的测试,避免了JavaScript 安全模型导致的限制。除了来自浏览器厂商的支持,WebDriver 还利用操作系统级的调用模拟用户输入。

二Selenium环境搭建

1.安装python

python的安装此处就不细说,去python官网下载地址,下载对应的python版本安装,注意环境变量的配置。

2.安装Selenium

使用pip 命令安装 selenium pip install selenium , Mac电脑 安装过python3 使用pip3 install selenium 来安装。

3.安装浏览器驱动

使用chrome浏览器,需要下载对应版本的chromedriver

4.安装上述工具后,可以测试下环境是否正常,使用以下这段代码

# -*- coding:utf-8 -*-

from selenium import webdriver

driver = webdriver.Chrome()

driver.get("http://baidu.com")

driver.close()

浏览器能正常打开百度,那么环境安装是正常的

WebDriver API

1.定位元素

  • 通过id属性来定位元素(id属性在html文档中必须具有唯一性)

  find_element_by_id()方法

  • 通过name属性来定位元素(name属性在当前页面中)

  find_element_by_name()方法

  • 通过class属性来定位元素

  find_element_by_class_name()方法

  • 通过tag来定位元素

  find_element_by_tag_name()方法

  • 通过link元素标签对之间的文本信息来定位元素

  find_element_by_link_text()方法

  • 通过partial link定位元素,和link类似,只不过是部分文本信息来进行定位

  find_element_by_partial_link_text()方法

  • find_element_by_xpath()方法

  绝对路径来定位:

find_element_by_xpath('/html/body/.........')

  文本框:

find_element_by_xpath("/html/body/div[2]/div[1]/div/div[1]/div/form/span[1]/input")

  • 通过CSS定位元素

1.通过id属性定位元素

文本框:

find_element_by_css_selector("#kw")

  按钮:find_element_by_css_selector("#su")

2.通过class属性定位元素

  文本框:

find_element_by_css_selector(".s_ipt")

  按钮:find_element_by_css_selector(".bg s_btn")

  3.通过其他属性值来定位元素

  文本框:

find_element_by_css_selector("[name = 'wd']")

find_element_by_css_selector("[maxlength = 255]")

find_element_by_css_selector("[autocomplete = 'off']")

  1.控制浏览器

  控制浏览器窗口大小:

driver=webdriver.Firefox()

#设置窗口大小为x,y

driver.set_window_size(x,y)

#最大化窗口

driver.maxmize_window()

2.元素操作

  当我们获取了元素之后,还要对其进行操作,如点击按钮、输入文字、提交表单等。大多数页面交互的方法通过WebElement接口提供,常用的有:

  • clear() 清除文本框中的文本

  • send_keys(*value) 模拟按键输入

  • click() 单击元素 这几个方法很简单,很方便使用。 submit() 用于提交表单,例如搜索框中的提交按钮。比如我们可以用如下代码直接输入搜索的关键字后用submit()提交,而不用获取搜索按钮再点击。

driver.find_element_by_css_selector("#kw").send_keys("selenium2").submit()

还有几个常用的方法:

  • size() 获取元素的大小尺寸

  • text()获取元素的文本

  • is_displayed()元素是否可见

  鼠标、键盘事件

  模拟鼠标右键、双击、悬停、拖拽等操作,会用到ActionChains类。

  selenium.webdriver.common.action_chains.ActionChains(driver)当调用ActionChains的方法时,不会立即执行,而是会将所有的操作按顺序存放在一个队列里,当你调用perform()方法时,队列中的时间会依次执行。

  ActionChains方法列表:

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) ——拖拽到某个坐标然后松开

key_down(value, element=None) ——按下某个键盘上的键

key_up(value, element=None) ——松开某个键

move_by_offset(xoffset, yoffset) ——鼠标从当前位置移动到某个坐标

move_to_element(to_element) ——鼠标移动到某个元素

move_to_element_with_offset(to_element, xoffset, yoffset) ——移到距某个元素(左上角)多少距离的位置

perform() ——执行链中的所有动作

release(on_element=None) ——在某个元素位置松开鼠标左键

send_keys(*keys_to_send) ——发送某个键到当前焦点的元素

send_keys_to_element(element, *keys_to_send) ——发送某个键到指定元素

设置等待时间

  • 显示等待:主要使用的类和方法:WebDriverWait、uitil\until_not、Expected Conditions。

  • 隐式等待: implicitly_wait

其他操作 还有其他一些操作如:上传下载文件、操作cookie、验证码的处理等等操作还没有用到过,用到的时候再去学习就好了。 熟练使用以上的各部分,可以写出各种常用的脚本,我们算是入门Selenium了。

Python+Selenium UI自动化测试环境搭建及使用的更多相关文章

  1. Selenium终极自动化测试环境搭建(二)Selenium+Eclipse+Python

    Selenium终极自动化测试环境搭建(二)Selenium+Eclipse+Python 前面举例了Selenium+Eclipse+Junit+TestNG自动化测试环境的搭建,在前一篇的基础上, ...

  2. Selenium终极自动化测试环境搭建(一) Selenium+Eclipse+Junit+TestNG

    Selenium终极自动化测试环境搭建(一)Selenium+Eclipse+Junit+TestNG 第一步 安装JDK JDk1.7. 下载地址:http://www.oracle.com/tec ...

  3. Selenium + Nightwatch 自动化测试环境搭建

    首先要安装 Java 7 或更高 ,(http://www.oracle.com/technetwork/java/javase/downloads/index.html) 并且 java 命令可正常 ...

  4. Selenium终极自动化测试环境搭建(二):Selenium+Eclipse+Python

    前面举例了Selenium+Eclipse+Junit+TestNG自动化测试环境的搭建,在前一篇的基础上,下面再举例Selenium+Eclipse+Python测试环境搭建. 第一步:安装Pyth ...

  5. python+selenium第一步 - 环境搭建

    刚开始学习一门技术,肯定是要从环境搭建开始的,我也不例外. 首先选择需要安装的版本,我使用的是mac自带的2.7版本. selenium2,和火狐浏览器 为求稳定不会出现未知问题,我选择了seleni ...

  6. python selenium自动化之-环境搭建

    安装python和pip上述文章有介绍,在这里不在赘述.直接安装seleinum pip3 install selenium 安装完成以后, pip3 show selenium 显示 Name: s ...

  7. python selenium+phantomJS自动化测试环境

    0x00配置phantomJS 1. 在windows平台下 此种方法是弹浏览器进行自动化测试的. 1.下载谷歌的驱动 https://chromedriver.storage.googleapis. ...

  8. python selenium - web自动化环境搭建

    前提: 安装python环境. 参考另一篇博文:https://www.cnblogs.com/Simple-Small/p/9179061.html web自动化:实现代码驱动浏览器进行点点点的操作 ...

  9. Appium+python移动端自动化测试-环境搭建(一)

    搭建所在系统环境:Windows7版本64位系统 一.环境准备 jdk8.0.151 android-sdk_r20.3.4-windows python3.5 appium1.4.16.1 Node ...

随机推荐

  1. ord 字符转code chr : code转字符

    print(ord('刀')) # ord 字符转Unicode # 20992 print(chr(20992)) # Unicode 转成chr(字符)

  2. 【C#】#100 调用摄像头

    需求:由于项目需要获得用户的头像,所以需要用C#调用摄像头获取头像. 下面写一个调用摄像头的方法 案例:调用摄像头的一个DEMO[效果图] 使用的类库:AForge.dll   [Demo下载,Dem ...

  3. 评微软收购GitHub

    前段时间,微软正式宣布以75亿美元收购GitHub.除了微软和GitHub以外,也许对这笔并购最在意的,正是微软的同城敌友,亚马逊.在我看来,GitHub也许是微软史上最好的收购. 75亿美元贵不贵? ...

  4. 工作中碰到的一个问题(cookie相关)

    今天上线了一个API,6台机器做的集群.API的第一步是读取cookie,判断用户是否登录. 例如,线上服务器分别是 10.255.242.1 10.255.242.2 10.255.242.3 10 ...

  5. C#基础学习之事件的理解和应用

    事件的使用和委托类似,也是分四步来实现:声明委托.定义事件.注册事件.调用事件 我们先看一下事件的定义 //定义委托 public delegate void PublishEventHandler( ...

  6. C语言利用 void 类型指针实现面向对象类概念与抽象。

    不使用C++时,很多C语言新手可能认为C语言缺乏了面向对象和抽象性,事实上,C语言通过某种组合方式,可以间接性的实现面对对象和抽象. 不过多态和继承这种实现,就有点小麻烦,但是依然可以实现. 核心: ...

  7. Spring-IOC MethodInvokingFactoryBean 类源码解析

    MethodInvokingFactoryBean MethodInvokingFactoryBean的作用是,通过定义类和它的方法,然后生成的bean是这个方法的返回值,即可以注入方法返回值. Me ...

  8. 详解Tensorflow数据读取有三种方式(next_batch)

    转自:https://blog.csdn.net/lujiandong1/article/details/53376802 Tensorflow数据读取有三种方式: Preloaded data: 预 ...

  9. BI之报表测试总结

    报表测试总结: 1.测试准备工作: 数据准备 保证足够多的有效数据 清楚报表中涉及到的算法.公式 清楚业务功能接口 2.报表测试点 基本测试点:界面.控件.格式.布局.明显的数据错误.js报错.报表标 ...

  10. SceneKit下关于修改SCNNode 的Shader展示自定义图形

    由于某些需求,需要在苹果OS x系统下展示一组点云,准备使用苹果官方的三维显示控件来完成这一功能.场景点云作为离散的点, 如果每个点以SCNnode的形式加入场景中,则回造成过大的内存消耗,笔者电脑下 ...