Java+Selenium自动化测试学习(一)
搭建项目环境基本流程
1、如果没安装jdk先安装jdk,并配置好环境变量;
2、如果没有安装工具,安装工具(Eclipse、IDEA)都可以;
3、安装好之后将工具打开,就开始搭建项目环境;
4、在Eclipse中创建一个项目;
5、将下载的将selenium-java包导入到项目中;
6、环境搭建完成,可以写一个简单的流程测试一下,如下面代码,先测试是否可以打开浏览器。
自动化测试基本流程
1、设置chromedriver的地址System.setProperty();
2、创建一个默认浏览器ChromeDriver driver = new ChromeDriver();
3、设置窗口属性(自定义,比如:设置窗口大小);
4、在浏览器窗口加载新的网页driver.get(url);
5、设置等待方式一般是显示等待和隐式等待两种;
6、定位元素;
7、退出浏览器。
package testLogin;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import java.util.concurrent.TimeUnit; public class LoginTest {
public static void main(String[] args) throws Exception {
//设置chromedriver的地址
System.setProperty("webdriver.chrome.driver", "E:\\selenium\\chromedriver.exe");
//创建一个默认的浏览器
WebDriver driver = new ChromeDriver();
driver.manage().window().maximize();//窗口最大化
String url = "";//写入测试的地址
driver.get(url);
Thread.sleep(1000);
//隐式等待,全局变量对页面中所有元素设置加载时间,总共等待10秒, 如果10秒后,元素还不存在,就会抛出异常
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
//定位登录界面元素
//如果文本框中之前有值,先清空元素之前的值
//手机号码
driver.findElement(By.ByCssSelector.cssSelector("input[type=\"text\"]")).clear();
driver.findElement(By.ByCssSelector.cssSelector("input[type=\"text\"]")).sendKeys("15211111111");
Thread.sleep(1000);
//密码
driver.findElement(By.ByCssSelector.cssSelector("input[type=\"password\"]")).clear();
driver.findElement(By.ByCssSelector.cssSelector("input[type=\"password\"]")).sendKeys("111111");
Thread.sleep(1000);
//跳转页面要用click,submit不能跳转只能提交,如果要用submit,后面还得在写一边click
driver.findElement(By.ByCssSelector.cssSelector("button[type='button']")).click();
Thread.sleep(1000);
System.out.println("登录成功,跳转到首页");
//设置用户信息,定位元素
//姓名
driver.findElement(By.ByXPath.xpath("//div[contains(@class,\"is-required\")][1]/div/div/input")).clear();
driver.findElement(By.ByXPath.xpath("//div[contains(@class,\"is-required\")][1]/div/div/input")).sendKeys("haha");
Thread.sleep(1000);
//性别,单选框是个点击事件,注意:这个路径不是input标签里面的radio,一般都是定位input里面的radio
driver.findElement(By.ByXPath.xpath("//label[@role=\"radio\"][1]")).click();
/**
* 生日
* 定位日期控件:
* 1.日期控件中有readonly,通过js去掉readonly属性
* 2.定位元素,手动输入日期
* 3.这里多了一个属性disabled,都要去掉
*/
//通过js获取属性信息
String jsScript = "document.getElementsByClassName('el-date-editor')[0].getElementsByTagName('input')[0].removeAttribute('readonly')";
String jsScript1 = "document.getElementsByClassName('el-date-editor')[0].getElementsByTagName('input')[0].removeAttribute('disabled')";
//执行js
((ChromeDriver) driver).executeScript(jsScript);
((ChromeDriver) driver).executeScript(jsScript1);
driver.findElement(By.ByXPath.xpath("//div[contains(@class,'el-date-editor')]/input")).clear();
driver.findElement(By.ByXPath.xpath("//div[contains(@class,'el-date-editor')]/input")).sendKeys("2020-01-13");
//联系电话
Thread.sleep(3000);
driver.findElement(By.ByXPath.xpath("//div[contains(@class,'is-required')][3]/div/div/input")).clear();
driver.findElement(By.ByXPath.xpath("//div[contains(@class,'is-required')][3]/div/div/input")).sendKeys("12522222222");
Thread.sleep(3000);
/**
* 下拉框
* 注意:这里的下拉框不是select类型,而是用ul和li模拟的下拉框
* 1、在定位下拉框时先输入框点击
* 2、在定位下拉框点击
*/
driver.findElement(By.ByXPath.xpath("(//div[contains(@class,'el-select')]/div/input)[1]")).click();
driver.findElement(By.ByXPath.xpath("//*[@class=\"el-select-dropdown__item\"][1]")).click();
Thread.sleep(3000);
driver.findElement(By.ByXPath.xpath("(//button[@type='button'])[1]")).click();
System.out.println("基础信息设置完成");
driver.quit();//退出浏览器 }
}
注:
1、如果双引号中还有双引号,可以自动转义,或者加单引号。
1、加单引号:"//button[@type='button'])[1]"
2、转义:"//div[contains(@class,\"is-required\"
2、三种等待方式。
3、不是select类型下拉框的定位方式(查看下拉框类型),我们的是ur\li写的下拉框例如:
1、先定位输入框click,然后弹出下拉框;
2、再定位下拉框中的元素click,最后的值赋值到输入框中
4、点击和提交:
1、submit提交表单事件
2、click响应事件。
例如:在登录时我用submit提交,未跳转到首页。使用click可以。
5、定位日期控件:日期控件一般都会有readonly或disable属性,,然后在定位元素输入日期。
1、先用js代码移除属性document.getElementsByClassName("")[0].removeAttribute('readonly')
2、然后在定位到元素使用sendkeys()方法输入日期
6、两种退出方式:
1、close()关闭当前窗口,如果是当前打开的最后一个窗口,则退出浏览器
2、quit()关闭所有关联的窗口
Java+Selenium自动化测试学习(一)的更多相关文章
- 《手把手教你》系列技巧篇(六)-java+ selenium自动化测试-阅读selenium源码(详细教程)
1.简介 前面几篇基础系列文章,足够你迈进了Selenium门槛,再不济你也至少知道如何写你第一个基于Java的Selenium自动化测试脚本.接下来宏哥介绍Selenium技巧篇,主要是介绍一些常用 ...
- 《手把手教你》系列技巧篇(四十六)-java+ selenium自动化测试-web页面定位toast-下篇(详解教程)
1.简介 终于经过宏哥的不懈努力,偶然发现了一个toast的web页面,所以直接就用这个页面来夯实一下,上一篇学过的知识-处理toast元素. 2.安居客 事先声明啊,宏哥没有收他们的广告费啊,纯粹是 ...
- 《手把手教你》系列基础篇(七十六)-java+ selenium自动化测试-框架设计基础-TestNG实现DDT - 下篇(详解教程)
1.简介 今天这一篇宏哥主要是结合实际工作中将遇到的测试场景和前边两篇学习的知识结合起来给大家讲解和分享一下,希望以后大家在以后遇到其他的测试场景也可以将自己的所学的知识应用到测试场景中. 2.测试场 ...
- Java+selenium自动化测试基础
Java+selenium maven配置 maven的配置,但还需要建立maven的本地库,修改apach-maven的setting.xml http://www.cnblogs.com/haoa ...
- Java&Selenium自动化测试调用JS实现单击
Java&Selenium自动化测试调用JS实现单击 /* * the method of invoking js to do something * * @author davieyang ...
- 《手把手教你》系列基础篇之(一)-java+ selenium自动化测试-环境搭建(上)(详细教程)
1.简介 jmeter系列的文章结束,本来想趁热打铁顺别将Jmeter和接口测试介绍一下,但是感觉Jmeter时间太长了怕大家吃腻了,还有一个原因就是许多小伙伴们或者童鞋们私信问宏哥什么时候可以有ja ...
- 《手把手教你》系列基础篇之(二)-java+ selenium自动化测试-环境搭建(下)基于Maven(详细教程)
1.简介 Apache Maven是一个软件项目管理和综合工具.基于项目对象模型(POM)的概念,Maven可以从一个中心资料片管理项目构建,报告和文件.由于现在企业和公司中Java的大部分项目都是基 ...
- 《手把手教你》系列技巧篇(十四)-java+ selenium自动化测试-元素定位大法之By xpath上卷(详细教程)
1.简介 按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍定位倒数二个方法:By xpath.xpath 的定位方法, 非常强大. 使用这种方法几乎可以定位到页面上的任意元素. ...
- 《手把手教你》系列技巧篇(十五)-java+ selenium自动化测试-元素定位大法之By xpath中卷(详细教程)
1.简介 按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍定位倒数二个方法:By xpath.xpath 的定位方法, 非常强大. 使用这种方法几乎可以定位到页面上的任意元素. ...
随机推荐
- 爬取豆瓣音乐TOP250的数据
参考网址:https://music.douban.com/top250 因为详细页的信息更丰富,本次爬虫在详细页中进行,因此先爬取进入详细页的网址链接,进而爬取数据. 需要爬取的信息有:歌曲名.表演 ...
- mysql 服务
1.以管理员身份运行cmd:C:\Windows\System32\cmd.exe 右键以管理员身份运行 2.“具体路径” --install “D:\programme installatio ...
- Java中基本数据类型byte的溢出问题
Java中基本数据类型byte的溢出问题 问题源于:https://www.cnblogs.com/HuoHua2020/p/12326631.html 定义两个byte类型的数据,将其之和赋值给一个 ...
- BZOJ3680 JSOI2004 平衡点 - 随机/近似算法
迭代乱搞了下就过了…… #include <bits/stdc++.h> using namespace std; ],y[],w[]; double xm,ym,wt,k,lambda= ...
- 从ASCII到Unicode再到UTF-8的历史原由
编码 大小 支持语言 ASCII 1个字节 英文 Unicode 2个字节(生僻字4个) 所有语言 UTF-8 1-6个字节,英文字母1个字节,汉字3个字节,生僻字4-6个字节 所有语言 具体解释: ...
- 163.扩展User模型-一对一方式扩展
一对一外键 如果你对用户验证方法authenticate没有更多的要求,就是使用username和password就可以完成用户的登录验证工作,但是想要在原来的模型的基础上添加新的字段,那么就可以使用 ...
- @Cacheable注解不生效原因
因为@Cacheable注解应用了AOP动态代理,生成代理类,判断缓存中是否存在该key,如果不存在则调用被代理类的标有@Cachable注解的方法,否则不执行. 所以当类A的方法a调用方法b(标有@ ...
- 洛谷P1583 魔法照片
https://www.luogu.org/problem/P1583 话不多说,其实就是模拟,然后,各种繁琐 #include<bits/stdc++.h> using namespac ...
- ArcGIS10:ArcGIS version not specified. You must call RuntimeManager.Bind before creating any ArcGIS
[网络转载] 今天将ArcGIS系列的软件从ArcGIS9.3.1升级到ArcGIS10,然后就使用VS创建一个简单的AE应用程序,然后拖放一个toolbar.LicenseControl以及MapC ...
- android 代码设置图标背景色(圆形图标)和图标颜色
原图: 1.改变图标颜色: mImageView.setColorFilter(Color.parseColor("#ff0000")); 效果: 2.改变图标背景色(主要是圆形图 ...