Selenium 并不像QTP那样让人一下子就明白是什么?它是编程人员的最爱,但它却对测试新手产生了很大的阻碍。

Selenium 是啥?

Selenium RC是啥?

Webdriver 又是啥?

RC 和 Webdriver 是啥关系?

Webdriver 和编程语言啥关系?

Selenium 能并行执行脚本嘛?

Selenium 能做移动端自动化么?

这里虫师用简单方式,告诉你,他们错综复杂的关系。理顺了它们之间的关系才能真正使用它。

Selenium 是什么?

Selenium 是web自动化测试工具集,包括IDE、Grid、RC(selenium 1.0)、WebDriver(selenium 2.0)等。

Selenium IDE 是firefox浏览器的一个插件。提供简单的脚本录制、编辑与回放功能。

Selenium Grid 是用来对测试脚步做分布式处理。现在已经集成到selenium server 中了。

RC和WebDriver 更多应该把它看成一套规范,在这套规范里定义客户端脚步与浏览器交互的协议。以及元素定位与操作的接口。

WebDriver是什么?

对于刚接触selenium自动化测试的同学来说不太容易理解API是什么,它到底和编程语言之是什么关系。

http://www.w3.org/TR/2013/WD-webdriver-20130117/

当初,在刚学selenium (webdriver)的时候花了一个星期来翻译这个文档,后来也没弄明白,它是啥。其实它就是一层基础的协议规范。

假如说:Webdriver API(接口规范)说,我们要提供一个页面元素id的定位方法。

Ruby的webdriver模块是这么实现的:

require "selenium-webdriver"   #导入ruby版的selenium(webdriver)

find_element(:id, "xx")    #id定位方法

C#的webdriver模块是这么实现的:

using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;  //导入C#版的selenium(webdriver)

FindElement(By.Id("xx"))   //id定位方法

python的webdriver模块是这么实现的:

from  selenium import webdriver    #导入python版的selenium(webdriver)

find_element_by_id("xx")   #id定位方法

Java的webdriver模块是这么实现的:

import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;//导入java版的selenium(webdriver)findElement(By.id("xx"))    //id定位方法

Robot Framework + selenium

因为Robot Framework 对于底层过于封装,所以,我们看不到语言层面的方法定义。所以,Robot Framework 提供给我们的方法如下:

1、导入Robot Framework 版本的selenium(webdriver)

2、使用id方法

Click element

Id=xx

 

需要说明的是 webdriver API 只提供了web页面操作的相关规范,比如元素定位方法,浏览器操作,获取web页元素属性等。

Webdriver  如何组织和执行用例?

对不起,webdriver 不会。

把写好这些操作页面元素的方法(用例)组织起来执行并输入测试结果,是由编程语言的单元测试框架去完成的。如java 的junit和testng单元测试框架,python 的unittest单元测试框架等。

Selenium RC 和WebDriver 什么关系?

RC和 WebDriver 类似,都可以看做是一套操作web页面的规范。当然,他们的工作原理不一样。

selenium RC 在浏览器中运行 JavaScript 应用,使用浏览器内置的 JavaScript 翻译器来翻译和执行selenese 命令(selenese 是 selenium 命令集合) 。

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

看样子webdriver 更牛B一些。为了保持向兼容,所以selenium 2.0中,RC 和webdriver 并存,但说起selenium 2.0 一般指的是webdriver 。

并行与分布式的区别

有同学好奇如何并行的执行测试用例,并行要求“同时”执行多条用例,这个也是由编程语言的多线程技术实现的。

你会问Selenium Grid 不是可以实现分布式执行么? 分布式的概念是写好一条用例可以调用不同的平台执行,如 A电脑上有一个测试用例,可以调用B电脑(linux)的 Firefox浏览器来跑A电脑上的测试用例;也可以调用C电脑(windows)的 Chrome浏览器来跑A电脑上的测试用例。这是分布式的概念。

Selenium如何能做移动端测试么?

这里我们以python 语言为例。

from selenium import webdriverdriver= webdriver.Chrome()   #获取浏览器驱动。拿到浏览器驱动driver 才能操作浏览器所打找的页面上的元素。 

我们把驱动展开是这样的

from selenium import webdriverdriver = webdriver.Remote(command_executor='http://127.0.0.1:4444/wd/hub',desired_capabilities={'platform': 'ANY','browserName':chrome,'version': '','javascriptEnabled': True}) 

驱动里包含了一些参数,代理服务器(URL)平台,浏览器 ,浏览器版本等。

移动端的自动化测试工具Appium 

从本质上来讲,appium同样继承了WebDriver  API的接口规范。Appium 同样是支持多种编程语言的。这里仍然以python 为例子。

from appium import webdriver  #导入python版的 appium(webdriver)模块#定义驱动的参数
desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '4.2'
desired_caps['deviceName'] = 'Android Emulator'
desired_caps['appPackage'] = 'com.android.calculator2'
desired_caps['appActivity'] = '.Calculator' driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

这一次因为我们操作的是移动端的安卓。所以我们驱动的参数里就要指定平台是'Android' ,版本是4.2 等信息。拿到驱动后,就可以操作安卓上的APP了。

selenium白话文相关推荐

  1. Python:Selenium和PhantomJS

    Selenium Selenium是一个Web的自动化测试工具,最初是为网站自动化测试而开发的,类型像我们玩游戏用的按键精灵,可以按指定的命令自动操作,不同是Selenium 可以直接运行在浏览器上, ...

  2. python+selenium浏览器常用操作(一)

    1.导入selenium自定义的webdriver.后续可通过调用此协议启动各大浏览器 from selenium import webdriver #浏览器 from selenium.webdri ...

  3. selenium 不同版本Driver

    selenium进行UI自动化测试需要Driver支持,不同的浏览器需要不同的Driver,之前使用的Driver可以正常运行,但是总会报一些莫名的问题,经过查找,原来IE的Driver需要与sele ...

  4. selenium+Python(鼠标和键盘事件)

    本篇总结了 web 页面常用的一些操作元素方法,可以统称为行为事件 有些 web 界面的选项菜单需要鼠标悬停在某个元素上才能显示出来(如百度页面的设置按钮). 1 简单操作 1.点击(鼠标左键)页面按 ...

  5. web自动化测试从入门到持续集成(selenium webdriver)

    在很多刚学习自动化的可能会认为我只需要会运用selenium,我只需要在一个编辑器中实用selenium +java编写了一些脚本那么就会自动化了,是真的吗?答案肯定是假的.自动化肯定是需要做到真的完 ...

  6. 「UI 测试自动化selenium」汇总

    <selenium 基础之java实现> selenium RC 环境配置 菜鸟学自动化测试(一)----selenium IDE 菜鸟学自动化测试(二)----selenium IDE ...

  7. java selenium_java+selenium,40行代码完成支付宝账单爬取

    java+selenium,40行代码完成支付宝账单爬取 需要jar selenium-server-4.0.0-alpha-5.jar 需要驱动 chromedriver.exe 驱动需要和浏览器版 ...

  8. linux firefox xvfb,自动化测试之linux+xvfb+selenium+firefox+python测试环境搭建与测试

    1. Xvfb 为一个X虚拟框架,这个框架使用虚拟内存能让linux系统图形界面服务器(X-Server)运行在没有显示设备的机器上,这样,浏览器就可以运行了. (1) 安装xvfb 需根据自己lin ...

  9. python get请求 由于目标机器_使用python和selenium进行Web抓取:由于目标机器主动拒绝i...

    我知道这个错误已经被讨论了很多,但似乎每种情况都有不同的原因. 我使用下面的代码和selenium从一个网站提取一些数据,并在第二次调用浏览器.get(url).在import openpyxl, o ...

  10. 在CentOS 7.7 x86_64上安装python3的selenium 3模块实录

    安装selenium3模块 pip3 install selenium 如果上面的命令因为网络问题,重试多次仍失败,可以尝试下面的命令 pip3 install selenium -i http:// ...

最新文章

  1. 机器学习的若干问题解释
  2. 2021-10-11 二叉树中查找值为key的结点
  3. Electron项目怎样打包成桌面exe应用
  4. asp.net学习笔记·文件上传
  5. 运行第一个docker容器
  6. 【bzoj5107】[CodePlus2017]找爸爸 dp
  7. 广联达文件被锁怎么修复_事无巨细的绕过Apple id教程+修复蜂窝数据/电话
  8. ps3无线无法与服务器通信,psp上网出现无法与服务器通信(8001006F)
  9. 六、访问CGI变量 (基础教程6)
  10. 重识 SQLite,简约不简单
  11. 用友发布智多星 AI 企业大脑,其核心组成原来是这样的
  12. oracle存储过程(PL/SQL)
  13. 解决Linux下使用QQ的问题
  14. 7-1 厘米换算英尺英寸 (c语言)
  15. 【3D目标检测】Rethinking Pseudo-LiDAR Representation
  16. 小米登录协议分析_小米智能家居设备流量分析及脚本控制
  17. 为什么宝宝做错事被骂哭后,还要求抱抱?
  18. 综述论文要写英文摘要吗_关于小论文的一些撰写建议!
  19. deepin系统中Qt5.12无法输入中文(无法切换中文输入法)解决办法
  20. 综述:演化遗传学发展历史简介

热门文章

  1. 虚拟机linux备份软件有哪些,备份工具的软件推荐比较
  2. 实体识别,你100%要遇到的知识建模的问题
  3. https之DHE keys 大小修改
  4. 认识电壁挂炉的三大误区
  5. redis数据库使用02、python 操作 || redis主从模式
  6. 【亲测】七合一支付收款码 40+模板
  7. 最聪明的狗,短短1年发了1.5篇论文
  8. Vue嵌套路由 二级路由等详解
  9. 企业数据治理面临的 6 大挑战!
  10. python cx_oracle 安装_Python 离线安装cx_Oracle