本篇文章由来,这两天整理了下自己经常使用而且很熟练的项目,今天突然想起漏了一个,补上了,但想到还没对应的博客,那就写一个简单的
我经常使用且相对熟练的部分技术如下(不知道算不算各位大神眼中的辣鸡):
传统的web项目测试,大多数都依靠测试部门小伙伴人工操作,费时费力还容易侧漏`(*∩_∩*)′ 错了 是漏测,
而selenium则为项目的测试提供了很大的便利,但并不是所有项目都适合,
哪些适合呢:公司自己的产品,且需要经常回归测试,比如类似OA这类业务系统产品
不适合的呢:比如外包业务,快速交付后就不管的,只需要测试一两次
今天用java写了一个简单示例,先看看执行效果(点击图片查看高清版本):
效果还满意么?满意请继续往下看,不满意请关闭窗口 谢谢
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 }
其中:
16行谷歌浏览器的驱动下载地址:https://chromedriver.storage.googleapis.com/index.html
18行火狐浏览器的驱动下载地址:https://github.com/mozilla/geckodriver/releases
然后运行,你就可以为所欲为了