51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2165|回复: 1
打印 上一主题 下一主题

Selenium印象接触

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-1-25 14:17:24 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 太鼓达人 于 2019-1-25 14:18 编辑

这两天,为了做一些自动化测试方面的知识储备,接触了Selenium这个工具,具体这是一个什么东西呢,百度百科是这么说的:

Selenium也是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7、8、9)、Mozilla Firefox、Mozilla Suite等。这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建衰退测试检验软件功能和用户需求。支持自动录制动作和自动生成 .Net、Java、Perl等不同语言的测试脚本。Selenium 是ThoughtWorks专门为Web应用程序编写的一个验收测试工具。

接触过web自动化测试的小伙伴应该都听说过LoadRunner的大名,先努力下载,乖乖最新的V11.5版本的就差不多4个G了,而且也就从V11.5开始才支持x64的系统,还有,这不是一个免费的版本,然后努力去找破解,破解完后一下子冒出好多功能,然后....说多了都是泪,之前放在桌面上千页的讲LoadRunner基础测试的书就没看过。亲,1000页了还基础测试。

吐槽了这么多,其实LoadRunner的功能很强大,只要会用当然很牛掰很顺手,就像大师美图一般都用PS一样,可以美得天花乱坠。

扯远了,回来说selenium,这工具与LoadRunner相比,就犹如美图秀秀 vs Photoshop一样,简单易用,不过有个门槛,就是得懂代码,真是让测试MM抓急。PS:其实LoadRunner也得学习脚本好不好,没点自学能力还学人家玩自动化测试,那您还真不合适在这个行业里长期发展了。


Selenium有什么

Selenium一共有三样东西需要去了解的:Selenium IDE、Selenium 1、Selenium 2

Selenium IDE是浏览器端的一个插件,可以跟踪用户行为来用来录制行为脚本,录制完之后可以通过脚本生成代码,比如C#、Java、Python2、Ruby等。哎,不对啊,干嘛要生成开发用的代码,要虐死不懂代码的人么?是的,Selenium就是要虐死你们...我只是开玩笑的,小伙伴们别怕..还记得百科说Selenium能在各个浏览器之间测试么,嘿嘿,他就是用代码的方式来调用浏览器,然后在各浏览器中运行测试用例的。所以,说到底还是需要学习怎么写代码........

Selenium 1和Selenium 2,则是Selenium IDE生成的代码的两种实现方式(Selenium 1也叫做Selenium RC)。从名字可以看出后者是前者的改进,但是现实情况是Selenium 1与Selenium 2各有优势,在实际应用中有可能存在相互切换的情况。我们也知道在现实世界中,大神是存在的,于是有些大神是直接跳过Selenium IDE来写代码的......


使用Selenium前的准备

首先,你需要会HTML的基本知识,比如标签、属性等,还有关于XHTML的XPath,懂了XHTML我觉得也就不需要说你还要动XML这个东西了吧

然后,学习一种编程语言吧,我推荐学习Python,在自动化测试、运维等领域都可以用得着,当然也可以用来做开发,在Google的正式项目上,Python就是被限定使用的编程语言之一。

其实你还可以学习一下javascript、css等边际知识点,这有助于把思维扩展开来。


Selenium的辅助工具

我是在firefox上面折腾的,所以以firefox为主吧。

FireBug:前端开发的应该没人不知了,在这里使用它主要是为了定位和查看元素。当然都可以使用各家浏览器自带的开发者工具,点击F12即可


FirePath:嵌入FireBug中使用的插件,可以用来验证输入的XPath是否达到 预期效果,各家浏览器也许也自带有,请自行验证,没有就下插件吧  - -!


Selenium IDE

正戏开始了,firefox上要怎么安装呢??

进入:http://docs.seleniumhq.org/,看到如下请努力点击

然后努力点击这个,就会自动安装插件了,剩下就不多说了,so perfect!

安装成功并重启浏览器之后,可以在插件栏或者“开发者”里找到并打开

打开之后样子应该是长这个如下的,默认是已开启了录制模式(方圈所圈,点击可退出录制模式),也就是在“Base URL”所表示的跟路径下,任何页面操作都将被记录下来。

大伙可以用百度主页来录制试试,反正点多几下也不用钱。

现在我在百度的搜索框里输入:selenium,来看看有什么变化,请记得一定要开启录制功能!

我来解释下上图,中间大圈圈的地方,是录制到的页面产生的行为,每一行表示几个行为,再看下面的小圈圈里的东西,其主要用于修改录制的每一行的信息。command表示这属于一个什么行为,比如open表示打开,其target的斜杠表示基于Base URL下的路径,在比如type表示输入,target是一个页面元素选择器,百度搜索框的元素id刚好等于kw,value表示输入的值。不同的command的targer与value是不一样的,Command栏是个下拉选择框,里面有N多command,第一次看的时候想想都醉了。target后面有两个按钮,大家可以根据选择不同的command来点击试试,好东西的。

录制完了之后,可以在“文件”中保存这个录制或者把这个录制输出成代码都可以,大家随意


Selenium IDE Command分类

command分为三大类:action、accessor、assertion

action一般是用来操作浏览器的动作,accessor用来检查页面或浏览器状态后存储状态变量的,assertion是用来检查浏览器或页面状态的

一般来说,每一个accessor都有一个assertion所对应。

action分浏览器操作、界面元素操作、鼠标键盘模拟操作、设置类操作的一般命令有:click、open、type、select、goBack、close、doubleClick、windowFocus等,都是看名字就知道是用来做什么的了,查阅下API就好了。提示下,像clickAndWait这种命令,是因为有些click之后会跳转页面,所以需要等待加载完毕,部分命令会如此。

accessor是用来存储状态变量的,比如标题、当前url、界面元素的值、界面元素的状态等,具体也是查阅API吧

assertion是对应accessor的,请继续查阅API

action、accessor、assertion,依据命令不同有不一样的target和value,记得用前查阅API。


Selenium 1 与Selenium 2

一讲到代码,不知有多少测试MM为之发狂,可是生活在所难免......其实我也不想写了,感觉都不知道怎么下手了,好繁琐...

我用的是Java,至于什么JDK安装、IDE选择、项目怎么建立,一概省略好几千字...


下面只是简易写个小例子


Selenium 1

因为这个东西年纪比较大,所以用起来稍微有点麻烦,得先运行一个服务器,主要是扮演HTTP代理的角色,截获和验证在浏览器和被测试的应用程序之间传递的HTTP消息


先下载各种jar包吧..

然后运行命令行:java -jar selenium-server-standalone-2.44.0.jar

开着就好,不用管了,然后是写代码..

  1. import com.thoughtworks.selenium.*;

  2. public class TestSelenium{
  3.     public static void main(String[] args){
  4.         DefaultSelenium selenium = new DefaultSelenium("localhost", 4444,
  5.                                 "*iexplore", "http://www.baidu.com");
  6.                 selenium.start();
  7.                 selenium.open("www.baidu.com");
  8.                 selenium.type("id=kw", "selenium");
  9.                 selenium.click("id=su");
  10.     }
  11. }
复制代码

一般会出现如下两个窗口,那你就成功了


Selenium 2

Selenium 2在使用上比Selenium 1上会来得方便一点,不需要额外手动启动一个server服务器,程序运行之后会自行运行浏览器。


但是Selenium 2并没有完全包含Selenium 1的全部功能,所以Selenium 2并不能完全替代Selenium 1

  1. import org.openqa.selenium.*;
  2. import org.openqa.selenium.WebDriver.*;
  3. import org.openqa.selenium.ie.*;

  4. public class TestSelenium {
  5.         public static void main(String[] args) {
  6.                 //如果出问题,请到http://code.google.com/p/selenium/downloads/list找到IEDriverServer.exe来下载,并设置系统属性
  7.                 //System.setProperty("webdriver.ie.driver", "D:/IEDriverServer.exe");
  8.                 WebDriver driver = new InternetExplorerDriver();
  9.                 Navigation navigation = driver.navigate();
  10.                 navigation.to("www.baidu.com");
  11.                 WebElement searchBox = driver.findElement(By.id("kw"));
  12.                 searchBox.sendKeys("selenium");
  13.                 searchBox.submit();
  14.         }
  15. }
复制代码


简易解说

Selenium 1和Selenium 2里的API,都对应着浏览器端可以进行的模拟操作,大部分都对应着Selenium IDE中的action,so,大家看看也应该都可以很顺利地利用API来模拟各种业务流程。


Web自动化测试的必要性

这是个两难的问题,麻烦地不停点鼠标好呢,还是麻烦地去写个自动化脚本,其实都不容易

一个简单的登陆框,就要验证“只输入用户名的情况”“只输入密码的情况”“同时输入正确的用户名和密码”“输入正确的用户名和错误的密码”“输入错误的用户名和正确的密码”“把是否记住密码也测试一次”....想想测试MM每次都要在更新版本之后把这么些繁琐无比的行为点上N次,那也能理解自动化测试的必要性了,省时间剩力气。

如果当前项目已经比较稳定了,然后后续改动也不大,还必须多次测试,那就写自动化测试吧,反之就算了..

当然,这种点还可以只对固定的功能点进行自动化测试,其他依旧用鼠标。


我就是这么想的,后端工程师求各路大神拍砖...


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-16 16:34 , Processed in 0.058980 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表