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

作者: 测试开发Kevin | 来源:发表于2020-04-10 10:22 被阅读0次

    本文用同一个实例来演示如何编写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进行编码的过程,当遇到复杂问题时,需要大大家具备过硬的编码技能,否则自动化脚本会及其脆弱。各位同学可以自己搞定后面的事情,当然也可以跟着我一起高效的学习自动化相关知识!

    相关文章

      网友评论

        本文标题:一文搞定Java和Python在Selenium3中的应用

        本文链接:https://www.haomeiwen.com/subject/lyfithtx.html