wanmin444 发表于 2018-1-8 20:33:09

Selenium+TestNG+SVN+Jenkins体验

  Selenium+TestNG+SVN+Jenkins体验
  最近有时间可以学习,所以学习了一下用Selenium+testNG做网页自动化的流程,SVN管理代码,用Jenkins来持续集成。简单记录一下免得以后忘记了。
  1.用Maven创建工程,为了可以自动下载包,很方便。可以直接在maven repository中找你要的包,然后把
  截图的内容https://images2017.cnblogs.com/blog/1040127/201712/1040127-20171215174303652-1915578172.png粘贴到pom.xml文件中,工程就会自动下载所需要的jar包。
  2.根据下面PO(Page-Object)模型,写代码,对于一个代码没有基础的人,so痛苦。。。
  PO

[*]公共库模块

[*]可复用方法
[*]日志管理
[*]等等。。
[*]页面管理

[*]单独对Web页面进行抽象、封装页面元素和操作方法
[*]用例仓库

[*]具体用例的管理
[*]执行模块---还没学习到

[*]控制器,可以批量执行,形成一个测试集




  下面是我的简陋代码(初学者的作品,莫笑啊):
https://images2017.cnblogs.com/blog/1040127/201712/1040127-20171215174324090-70836560.png

[*]util包,负责抽象出可复用的类、方法,比如kill进程、获取日期、获取随机数,初始化log对象、键盘操作、截图操作,封装cookie、WebDeiver对浏览器和window的一下操作等等
[*]data包,负责写dataProvider中的一些测试数据(这都静态的,后面会说用excel中的数据做数据驱动)。
[*]config包,负责读取配置文件,利用Property的getProperty方法来获取key对应的value值。Driver管理针对不同driver,启动前的设置。
[*]page包,对Web页面进行封装,包括页面元素和操作方法
[*]business包,对对应页面的逻辑进行封装
[*]case包,不同页面中可以有多个case
  先说一说用到的一些jar包吧
  Testng、selenium、log4j、Feed4TestNG相关包,后面因为需要用ant来调用testng.xml所以还用到了ant的包,为了美化报告,用了testng-xslt-1.1.2.zip解压出来的saxon-8.7.jar 和 SaxonLiason.jar 等等 很多很多。。。
  接下来重点记录一下遇到的问题吧:
  a)      上传文件--------可以sendkeys、键盘模拟、或者用autoit编译出exe
  b)      iframe太多了
  driver.switchTo().frame(Int index); //传入参数为frame的序号,从0开始
  driver.switchTo().frame(String nameOrId); //传入参数为frame的ID或者Name属性
  driver.switchTo().parentFrame(); //切换回父级 –高版本selenium可用
  driver.switchTo().defaultContent(); //切换回默认
  c)       弹出的window太多了,需要切换driver. getWindowHandles() ,然后循环处理
  d)      处理对话框(alert/confirm/prompt)
  e)      处理表格,可以拼接xpath
  f)       处理富文本框
  // 富文本编辑框的处理
  driver.switchTo().frame("ueditor_0"); //定位到富文本输入框所在的frame
  JavascriptExecutor js = (JavascriptExecutor) driver;
  js.executeScript("document.body.innerHTML='ABCDEFG'"); //通过js赋值进去
  g)      处理Cookie(有时为了不依赖登录的用例,我们可以吧登录后的cookie添加进去,然后就可以操作登录后的页面了)
  h)      等待

[*]driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); //推荐使用
[*]Thread.sleep() //浪费时间,弊端多
  i)      截图
  File screenShotFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
  FileUtils.copyFile(screenShotFile, new File("C:/test.png"));
  j)      JavaScript

[*]JavaScript 能够改变页面中的所有 HTML 元素
[*]JavaScript 能够改变页面中的所有 HTML 属性
[*]JavaScript 能够改变页面中的所有 CSS 样式
[*]JavaScript 能够对页面中的所有事件做出反应
  Selenium可以执行js脚本
  JavascriptExecutor js = (JavascriptExecutor) driver;
  js.executeScript(“xxxxxxxxxxxxxxxxxxxxxxxx”)
  //设置日期控件的读写属性
  document.getElementById(\"fromDate\").readOnly=false
  //f富文本编辑框的处理
  document.body.innerHTML='ABCDEFG'
  //js模拟点击
  js.executeScript("arguments.click();",driver.findElement(By.id("su")));
  //滚动条操作
  document.documentElement.scrollTop=1500
  //元素赋值
  document.getElementById('HD_CheckIn').value='zhangsan';
  //日期类型元素赋值
  js.executeScript("arguments .value=‘2016-04-20’;",driver.findElement(By*****)));
  接下来写一下TestNG,还是多多看一看官方文档吧

[*]TestNG的注解Annotation
[*]查看官方文档吧http://testng.org/doc/documentation-main.html#annotations
[*]TestNG的断言Assert
[*]运行testNG
[*]Eclipse中直接右键选择TestNG运行
[*]编写ant的xml文件
[*]命令行
[*]

[*]运行结果
[*]  Eclipse中的testng插件中可以直接查看
[*]  Ant中自定义的报告输入目录
[*]  Jenkins中的TestNG Results Plugin

[*]  ReRun failed test

[*]  testng-failed.xml

[*]  dataProvider

  查看Feed4j的官网http://databene.org/feed4testng.html
  @Test(dataProvider = "feeder", enabled = true)
  @Source("testdata/com/cases/YYHX_HomeTest.xls")
  查看TestNG官网
  @Test(dataProvider="LoginFail",dataProviderClass = YYHX_HomeTestData.class,enabled = false)
  接下来用ant来写一下build.xml 来调用testNG.xml吧
  编译所有java文件
https://images2017.cnblogs.com/blog/1040127/201712/1040127-20171215174652918-1765293496.png
  执行testNG.xml
https://images2017.cnblogs.com/blog/1040127/201712/1040127-20171215174701090-137302221.png
  美化报告
https://images2017.cnblogs.com/blog/1040127/201712/1040127-20171215174706136-1516965570.png
  接下来,使用SVN和Jenkins来持续运行我的low代码,哈哈

[*]安装Subversion也可以用visual SVN
[*]创建版本控制库
[*]C:\repos\source1(路径随意哈)
[*]在source1目录上点击鼠标右键,选择TortoiseSVN->在此创建版本库
[*]配置版本库,如果用的visual SVN更简单,就是设置权限,创建user和group

  source1\conf\svnserve.conf

  anon-access = none
  auth-access = write
  password-db = passwd
  authz-db = authz
  realm = My First Repository
  source1\conf\passwd

  test = test
  source1\conf\authz

  all = test

  test = rw

[*]导入托管文件
[*]配置svnservice服务,并启动
[*]将SVNService.exe拷贝到SVN服务端(Subversion)安装路径的BIN目录下
[*] Cmd下运行命令:svnservice -install -d -r C:\repos

  安装Jenkins,并在浏览器用http://localhost:8080 打开jenkins

[*]注册admin用户
[*]安全配置
[*]设置环境变量JDK 、Ant
[*]安装插件testng-plugin
[*]创建项目环境
[*]配置项目
[*]Source Code管理
[*]https://images2017.cnblogs.com/blog/1040127/201712/1040127-20171215174739496-1833597051.png
[*]Build环境 使用ant,并设置build.xml文件
[*]https://images2017.cnblogs.com/blog/1040127/201712/1040127-20171215174809027-1366163560.png
[*]Apply
[*]点击立即构建,查看控制台信息就可以看到在build文件中定义的target的任务的执行情况。

https://images2017.cnblogs.com/blog/1040127/201712/1040127-20171215174820183-71609277.png
页: [1]
查看完整版本: Selenium+TestNG+SVN+Jenkins体验