✏️作者:银河罐头
📋系列专栏:JavaEE
🌲“种一棵树最好的时间是十年前,其次是现在”
目录
什么是自动化测试?
自动化测试就是将人工测试手段进行转换,让代码去执行。
自动化测试分类:
单元测试,接口自动化,UI自动化。
Selenium 介绍
Selenium 是什么
Selenium 是 web 应用中基于 UI 的自动化测试框架。
Selenium 特点
支持多平台、多浏览器、多语言(如java,C#,Python,Ruby), 有丰富的 API。
工作原理
selenium+Java环境搭建
Chrome+Java
windows电脑环境搭建-chrome浏览器
1.下载chrome浏览器
2.查看chrome浏览器版本
3.下载chrome浏览器驱动
https://chromedriver.chromium.org/downloads
配置环境变量
解压下载好的驱动压缩包,将下载好的chromedriver.exe放到java系统环境变量下.
验证环境是否搭建成功
1.创建java项目,添加pom文件中添加依赖
<dependencies><!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java --><dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-java</artifactId><version>3.141.59</version></dependency></dependencies>
2.编写代码运行
importorg.openqa.selenium.chrome.ChromeDriver;importorg.openqa.selenium.chrome.ChromeOptions;publicclassMain{publicstaticvoidmain(String[] args){ChromeOptions options =newChromeOptions();
options.addArguments("--remote-allow-origins=*");WebDriver webDriver =newChromeDriver(options);
webDriver.get("https://www.baidu.com");}}
如果打开了浏览器,此时说明安装成功。
selenium 常用 API
元素的定位
css 定位
publicclassMain{publicstaticvoidmain(String[] args){ChromeOptions options =newChromeOptions();//允许所有请求
options.addArguments("--remote-allow-origins=*");WebDriver webDriver =newChromeDriver(options);//打开百度首页
webDriver.get("https://www.baidu.com");//找到百度搜索输入框WebElement element = webDriver.findElement(By.cssSelector(".s_ipt"));//输入软件测试
element.sendKeys("软件测试");}}
运行:
xpath 定位
publicclassMain{publicstaticvoidmain(String[] args){ChromeOptions options =newChromeOptions();//允许所有请求
options.addArguments("--remote-allow-origins=*");WebDriver webDriver =newChromeDriver(options);//打开百度首页
webDriver.get("https://www.baidu.com");//找到百度搜索输入框//xpath 定位元素WebElement element = webDriver.findElement(By.xpath("//*[@id=\"kw\"]"));//输入软件测试
element.sendKeys("软件测试");}}
- 绝对路径:/html/head/title (不常用)
- 相对路径:
相对路径 + 索引://form/span[1]/input
相对路径 + 属性值://input[@class=“s_ipt”]
相对路径 + 通配符:// * [@ * =“su”]
相对路径 + 文本匹配://a[text()=“新闻”]
publicclassMain{publicstaticvoidmain(String[] args)throwsInterruptedException{test01();}privatestaticvoidtest01()throwsInterruptedException{ChromeOptions options =newChromeOptions();//允许所有请求
options.addArguments("--remote-allow-origins=*");WebDriver webDriver =newChromeDriver(options);//打开百度首页
webDriver.get("https://www.baidu.com");//找到百度搜索输入框//css定位元素// WebElement element = webDriver.findElement(By.cssSelector(".s_ipt"));//xpath 定位元素WebElement element = webDriver.findElement(By.xpath("//*[@id=\"kw\"]"));//输入软件测试
element.sendKeys("软件测试");//找"百度一下"按钮//点击
webDriver.findElement(By.cssSelector("#su")).click();sleep(3000);//校验List<WebElement> elements = webDriver.findElements(By.cssSelector("a em"));int flag =0;for(int i =0;i < elements.size();i++){if(elements.get(i).getText().contains("测试")){
flag =1;System.out.println("测试通过");break;}}if(flag ==0){System.out.println("测试不通过");}}}
css 选择器定位元素效率更高。
操作测试对象
- click 点击对象
- send_keys 在对象上模拟按键输入
- clear 清除对象输入的文本内容
privatestaticvoidtest02()throwsInterruptedException{ChromeOptions options =newChromeOptions();//允许所有请求
options.addArguments("--remote-allow-origins=*");WebDriver webDriver =newChromeDriver(options);//打开百度首页
webDriver.get("https://www.baidu.com");//找到百度搜索输入框,输入"软件测试"
webDriver.findElement(By.cssSelector("#kw")).sendKeys("软件测试");//点击"百度一下"按钮
webDriver.findElement(By.cssSelector("#su")).click();sleep(3000);//清空百度搜索输入框中的数据
webDriver.findElement(By.cssSelector("#kw")).clear();}
- submit 提交
如果点击的元素放在 form 标签中,使用 submit 和 click 效果一样。
如果点击的元素不在 form 标签中,此时使用 submit 会报错。
//会报错,因为点击的是"新闻"超链接,它没有放在 form 标签中privatestaticvoidtest03(){ChromeOptions options =newChromeOptions();//允许所有请求
options.addArguments("--remote-allow-origins=*");WebDriver webDriver =newChromeDriver(options);//打开百度首页
webDriver.get("https://www.baidu.com");
webDriver.findElement(By.xpath("//a[text()=\"新闻\"]")).submit();}
- text 用于获取元素的文本信息
- getAttribute: 获取元素属性的值。
像"软件测试"这样的可以通过.getText()来获取文字内容。
而"百度一下"这个按钮不能通过 .getText() 来获取文字内容。
privatestaticvoidtest04(){ChromeOptions options =newChromeOptions();//允许所有请求
options.addArguments("--remote-allow-origins=*");WebDriver webDriver =newChromeDriver(options);//打开百度首页
webDriver.get("https://www.baidu.com");String button_value = webDriver.findElement(By.cssSelector("#su")).getText();System.out.println(button_value);}
没有打印 “百度一下” 这个按钮的文本内容。
如果要想打印"百度一下" 这个按钮的文本内容,可以通过 getAttribute()
privatestaticvoidtest04(){ChromeOptions options =newChromeOptions();//允许所有请求
options.addArguments("--remote-allow-origins=*");WebDriver webDriver =newChromeDriver(options);//打开百度首页
webDriver.get("https://www.baidu.com");String button_value = webDriver.findElement(By.cssSelector("#su")).getAttribute("value");System.out.println(button_value);}
添加等待
强制等待
sleep();
隐式等待
隐式等待和显式等待都是智能等待。
如果等待时间 3 天时间,强制等待会一直等待,等待的时间 3 天。
隐式等待,最多等 3 天,如果在 这 3 天之内获取到了页面上的元素,就会往下执行代码;如果等待 3 天还没有找到这个元素就会报错。
privatestaticvoidtest02()throwsInterruptedException{ChromeOptions options =newChromeOptions();//允许所有请求
options.addArguments("--remote-allow-origins=*");WebDriver webDriver =newChromeDriver(options);//打开百度首页
webDriver.get("https://www.baidu.com");//找到百度搜索输入框,输入"软件测试"
webDriver.findElement(By.cssSelector("#kw")).sendKeys("软件测试");//点击"百度一下"按钮
webDriver.findElement(By.cssSelector("#su")).submit();// sleep(30000000);
webDriver.manage().timeouts().implicitlyWait(3,TimeUnit.DAYS);//清空百度搜索输入框中的数据
webDriver.findElement(By.cssSelector("#kw")).clear();}
sleep(30000000); 效果是 输入框输入 软件测试后 一直死等 30000000 ms.
webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.DAYS);
效果是只要输入框一输入完软件测试,就执行下面的代码,clear(). 没有等待。
显式等待可以让他指定去等待某一个元素。
打印信息
打印 title
打印 url
privatestaticvoidtest05(){ChromeOptions options =newChromeOptions();//允许所有请求
options.addArguments("--remote-allow-origins=*");WebDriver webDriver =newChromeDriver(options);//打开百度首页
webDriver.get("https://www.baidu.com");String url = webDriver.getCurrentUrl();String title = webDriver.getTitle();System.out.println("title: "+ title +" url: "+ url);}
版权归原作者 银河罐头 所有, 如有侵权,请联系我们删除。