selenium-java web自动化测试工具

发表于:2018-8-31 14:05

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

 作者:肖哥哥    来源:博客园

  本篇文章由来,这两天整理了下自己经常使用而且很熟练的项目,今天突然想起漏了一个,补上了,但想到还没对应的博客,那就写一个简单的
  我经常使用且相对熟练的部分技术如下(不知道算不算各位大神眼中的辣鸡):
   
  传统的web项目测试,大多数都依靠测试部门小伙伴人工操作,费时费力还容易侧漏`(*∩_∩*)′  错了 是漏测,
  而selenium则为项目的测试提供了很大的便利,但并不是所有项目都适合,
  哪些适合呢:公司自己的产品,且需要经常回归测试,比如类似OA这类业务系统产品
  不适合的呢:比如外包业务,快速交付后就不管的,只需要测试一两次
  案例一:一个简单示例(无弹出框这类单一页面),先看看执行效果(点击图片查看高清版本):
  效果还满意么?满意请继续往下看,不满意请关闭窗口 谢谢
  1.新建maven项目,引入selenium-java
  <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
  <dependency>
  <groupId>org.seleniumhq.selenium</groupId>
  <artifactId>selenium-java</artifactId>
  <version>3.8.1</version>
  </dependency>

  2.写代码(因为自动化测试速度极快,每个步骤后我都稍微停顿了下,注释也很清晰明了)
  1 package com.xiao.selenium;
  2
  3 import java.util.List;
  4 import java.util.Random;
  5 import java.util.concurrent.TimeUnit;
  6
  7 import org.openqa.selenium.By;
  8 import org.openqa.selenium.JavascriptExecutor;
  9 import org.openqa.selenium.WebDriver;
  10 import org.openqa.selenium.WebElement;
  11 import org.openqa.selenium.firefox.FirefoxDriver;
  12
  13 public class AutoTest {
  14     public static void main(String[] args) throws InterruptedException {
  15         Thread.sleep(3000);
  16         //System.setProperty("webdriver.chrome.driver", "c://chromedriver.exe");
  17         //WebDriver webDriver = new ChromeDriver();
  18         System.setProperty("webdriver.gecko.driver", "c://geckodriver.exe");
  19         WebDriver webDriver = new FirefoxDriver();
  20         webDriver.manage().window().maximize();
  21         webDriver.manage().deleteAllCookies();
  22         // 与浏览器同步非常重要,必须等待浏览器加载完毕
  23         webDriver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
  24
  25         //打开目标地址
  26         webDriver.get("http://192.168.0.32:88");
  27         //输入账号 密码并登陆系统
  28         Thread.sleep(1000);
  29         webDriver.findElement(By.xpath("/html/body/div/div/form/div[1]/div/div/input")).sendKeys("admin");
  30         webDriver.findElement(By.xpath("/html/body/div/div/form/div[2]/div/div/input")).sendKeys("123456");
  31         webDriver.findElement(By.cssSelector("html body div#app div.loginPage form.el-form.fromBox button.el-button.loginBtn.el-button--primary")).click();
  32
  33         //选择系统
  34         Thread.sleep(1000);
  35         webDriver.findElement(By.xpath("/html/body/div/div/div/div[1]/p")).click();
  36
  37         //展开基础信息管理菜单
  38         Thread.sleep(1000);
  39         webDriver.findElement(By.xpath("/html/body/div/div/div/div[1]/div[3]/ul/div[1]/li/div/span")).click();
  40         //点击科室管理菜单
  41         Thread.sleep(1000);
  42         webDriver.findElement(By.cssSelector(".is-opened > ul:nth-child(2) > li:nth-child(1)")).click();
  43
  44         //跳转到第2页
  45         Thread.sleep(1000);
  46         webDriver.findElement(By.xpath("/html/body/div/div/div/div[2]/div[2]/div/div[2]/div[2]/div/div[2]/ul/li[2]")).click();
  47
  48         //点击新增按钮
  49         webDriver.findElement(By.xpath("/html/body/div/div/div/div[2]/div[2]/div/div[2]/div[1]/div/div[1]/div[1]/button")).click();
  50
  51         //根据规则随机生成文本框内容
  52         int random = new Random().nextInt(200000000);
  53         Thread.sleep(1000);
  54         webDriver.findElement(By.xpath("/html/body/div[1]/div/div/div[2]/div[2]/div/div[3]/div/div[2]/form/div[1]/div[1]/div/div/input")).sendKeys(String.valueOf(random));
  55         Thread.sleep(1000);
  56         webDriver.findElement(By.xpath("/html/body/div[1]/div/div/div[2]/div[2]/div/div[3]/div/div[2]/form/div[1]/div[2]/div/div[1]/input")).sendKeys("自动化测试-"+random);
  57
  58         //展开下拉框
  59         webDriver.findElement(By.xpath("/html/body/div[1]/div/div/div[2]/div[2]/div/div[3]/div/div[2]/form/div[2]/div[1]/div/div/div[1]/span/span/i")).click();
  60         Thread.sleep(1000);
  61         //获取下拉框size
  62         List<WebElement> select1 = webDriver.findElements(By.cssSelector("div.el-select-dropdown:nth-child(4) > div:nth-child(1) > div:nth-child(1) > ul li"));
  63         //随机选择一个项目
  64         int selectItem1 = new Random().nextInt(select1.size())+1;
  65         webDriver.findElement(By.xpath("/html/body/div[3]/div[1]/div[1]/ul/li["+selectItem1+"]")).click();
  66
  67         //稍作停顿,然后保存
  68         Thread.sleep(1000);
  69         webDriver.findElement(By.xpath("/html/body/div[1]/div/div/div[2]/div[2]/div/div[3]/div/div[3]/div/button[1]")).click();
  70
  71         //跳转到我的博客
  72         Thread.sleep(3000);
  73         webDriver.get("https://www.cnblogs.com/xiaochangwei");
  74
  75         webDriver.findElements(By.className("postTitle")).forEach(x -> {
  76             System.out.println(x.getText());
  77         });
  78
  79         Thread.sleep(1000);
  80         //打开标题为 通过Dockerfile构建镜像并发布web项目 的文章
  81         webDriver.findElement(By.partialLinkText("通过Dockerfile构建镜像并发布web项目")).click();
  82
  83         Thread.sleep(1000);
  84         //移动到底部
  85         //((JavascriptExecutor) webDriver).executeScript("window.scrollTo(0, document.body.scrollHeight)");
  86         //移动到指定的坐标(相对当前的坐标移动)
  87         ((JavascriptExecutor) webDriver).executeScript("window.scrollBy(0, 700)");
  88         Thread.sleep(1000);
  89         //移动到窗口绝对位置坐标,如下移动到纵坐标1600像素位置
  90         ((JavascriptExecutor) webDriver).executeScript("window.scrollTo(0, 1600)");
  91         Thread.sleep(1000);
  92         //移动到指定元素,且元素底部和窗口底部对齐 参考 https://www.cnblogs.com/testway/p/6693140.html
  93         ((JavascriptExecutor) webDriver).executeScript("arguments[0].scrollIntoView(false);", webDriver.findElement(By.xpath("/html/body/div[2]/div[2]/div[1]/div/div[1]/div/div/div[2]/div[4]/div[3]/div[1]/a[5]/img")));
  94         //暂停五秒钟后关闭
  95         Thread.sleep(2000);
  96         webDriver.quit();
  97     }
  98 }
   上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
      
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号