测试开发Python编码知识点测试开发Java编码知识点UI自动化测试

一文搞定Java和Python在Selenium3中的应用

2020-04-10  本文已影响0人  测试开发Kevin

本文用同一个实例来演示如何编写python 和java代码的selenium实战文章,读者可以通过这篇文章了解到selenium是什么、如何使用katalon recorder录制脚本、如何搭建Selenium环境以及如何使用python或者java编写selenium脚本。文章有一点长,但是请相信我,文章真的很实用,如果你想上手Selenium自动化测试,她一定会帮到你!无论你的web项目编码使用的是java还是python,看这篇文章就够了!

Selenium概述

Selenium 是用于测试Web 应用程序用户界面(UI) 的常用框架。它是一款用于运行端到端功能测试的超强工具。您可以使用多个编程语言编写测试(目前支持的语言有Java,Python,Ruby, C#),并且Selenium 能够在一个或多个浏览器中执行这些测试。

目前Selenium 组件主要包括SeleniumIDE ,Webdriver,Selenium Grid。

Selenium主要分为2和3,二者具体区别如下:

Selenium3可以看作是selenium2的升级版本,主要更新内容如下:

去掉了对selenium rc的支持。

全面拥抱java 8。 如果你需要使用selenium的java binding话,那么你就必须使用java 8了。

支持最新的firefox、edge、chrome、safari、opera、ie浏览器。

环境搭建

任何自动化测试的第一步都是从环境搭建开始、主要是是编码语言的安装、IDE的安装,最后是工具的安装,在这里先讲java的环境搭建,然后讲python的环境搭建

Java环境搭建

前提:

安装java,jdk 1.8.0_151

安装eclispe Neon.3 Release(4.6.3)

下载各个浏览器的driver,以firefox为例,firefox版本74.01(64位)

https://github.com/mozilla/geckodriver/releases

选择geckodriver-v0.26.0-win64.zip

注意:下载后把geckodriver.exe 放入windows的环境变量中

下载selenium jar包

访问https://www.selenium.dev/downloads/

IDE中导入selenium jar

把下载的selenium jar包和Junit4Library引入到Eclipse的selenium自动化项目工程

Python环境搭建

前提:

安装python,3.7.4,把 你的python\Scripts目录加入环境变量中

安装pycharm社区版就可以

selenium模块安装

安装selenium ,在cmd窗口中输入 pip install selenium,完成selenium模块的安装

由于Java环境搭建中,已经把geckodriver.exe 放入windows的环境变量中,这里就无需重复操作了

脚本录制

环境搭建后,我们可以进行自动化的上手操作了,录制脚本。

这里给大家介绍一款Selenium IDE的替代者,Katalon Automation Recorder

如下为安装使用方法:

安装

安装去谷歌应用商店,或者火狐插件均可下载,文档中的版本是4.1.3

安装完成后,右上角会出现插件图标:

使用

点击图标,会出现单独的 Katalon Recorder 窗口:

其中:

①工具栏

②用例管理器

③用例详情

④ Log/Reference/Variable

点击窗口上的 Record,下面就会开始录制浏览器操作了。

这里我们打开百度首页,输入selenium,点击“百度一下”按钮。

每当操作页面UI元素时候,插件就会记录下你这些动作,生成对应的录制脚本。

录制完成后,点击“Stop”按钮停止录制,点击“Play”按钮可以回放刚才的动作。

脚本导出

点击 Export 按钮可以把录制的脚本转化成不同的脚本语言,选择Java(WebDriver+JUnit),可以看到对应的Java脚本,还可以把脚本导出到IDE中进行二次开发。

选择Python2(WebDriver+unittest),可以看到对应的python脚本,还可以把脚本导出到IDE中进行二次开发。

脚本解析

前面我们已经演示了如何把录制的代码分别转化成java脚本和python脚本,如果想要执行脚本只需要把对应的java文件和py文件拷贝到Eclipse 和Pycharm中运行即可。这里我重点分析一下自动脚本的含义:

先分析java脚本,java的selenium脚本是基于junit4测试框架的,关于junit4框架这里就不详细说明了,后面我会写关于junit4的详细文章,欢迎大家持续关注。具体脚本说明请参考下图:

然后分析python脚本,python的selenium脚本是基于unittest测试框架的,unittest的规则与junit4类似,这里也不再详细说明了。

核心api的分析

Java

打开firefox浏览器

driver = new FirefoxDriver();

打开百度首页

driver.get("https://www.baidu.com");

清理输入框内容

driver.findElement(By.id("kw")).clear();

在输入框输入“selenium”

driver.findElement(By.id("kw")).sendKeys("selenium");

点击“百度一下”

driver.findElement(By.id("su")).click();

Python

打开firefox浏览器

self.driver = webdriver.Firefox()

打开百度首页

driver.get("https://www.baidu.com/")

清理输入框内容

driver.find_element_by_id("kw").clear()

在输入框输入“selenium”

driver.find_element_by_id("kw").send_keys("selenium")

点击“百度一下”

driver.find_element_by_id("su").click()

从上面例子不难看出,关于selnium 自动化测试,java和python提供的脚本是非常接近的,只要你会其中的一种,想读懂另一种并不是什么难事!

断言应用

我在自动化入门的文章中介绍过,自动化测试的本质是:自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。我们可以看到上面的例子中代码已经完成了对手工测试执行的代替,但是还有一点没有搞定,那就是——如何校验测试结果!无论是junit4还是unittest都提供了相关机制,我们统一称之为断言。

方法一:大家试想,我们搜索selenium关键字后,只要在网页中能够找到下图里“百度为您找到相关结果约”相关的文字信息就证明我们搜索成功了呢?

答案是:Yes!

方法二:网页中出现的selenium搜索结果都是链接形式展现,那么我们只需要判断网页中的web元素包含“selenium”关键字即可。

方法n:一个业务,可以有很多校验点,大家可以结合实际业务自行挖掘!

这里我们利用方法二来作为断言的校验点,Junit4中可以用方法assertTrue、assertEquals来进行断言操作。我们可以使用driver.findElement(By.partialLinkText("selenium")) 来判断页面中是否出现包含selenium的链接。在默认录制的脚本中,有一个方法isElementPresent ,用来校验页面中是否包含某个元素,代码如下:

我们可以利用该方法完成断言操作,代码如下:

assertTrue(isElementPresent(By.partialLinkText("selenium")));

改进后的测试用例代码如下:

最后运行代码 Run As >Junit Test,可以看到脚本的回放过程。

在python中,unittes提供方法assertTrue 和assertEqual作为断言,同java代码的实现原理,我们可以使用方法self.is_element_present(By.PARTIAL_LINK_TEXT,"selenium")

来判断页面中是否出现包含selenium的链接,改进后的测试用例代码如下:

最后在pycharm中运行代码如下图所示,同样可以看到脚本的回放过程。

讲到这里,我把百度搜索这个实例,用java和python两种语言进行了实际操作。现在大家已经了解了上手selenium的方法,剩下的事情是需要大家自己了解selenium元素识别的方式以及常用api的使用方法了,随着大家实际项目经验的丰富就会一点点成为selenium高手。

总结

selenium自动化测试的本质总结为以下两点:

1.通过使用selenium提供的api,对页面元素进行操控进而模拟人工点击;

2.通过断言机制模拟人工校验;

这个过程其实就是大家不断熟练selneium api进行编码的过程,当遇到复杂问题时,需要大大家具备过硬的编码技能,否则自动化脚本会及其脆弱。各位同学可以自己搞定后面的事情,当然也可以跟着我一起高效的学习自动化相关知识!

上一篇下一篇

猜你喜欢

热点阅读