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

发表于:2020-7-17 10:49

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:测试开发Kevin    来源:简书

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

      本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号