java+selenium UI自动化001
selenium是一个用于Web应用程序测试的工具,可以用来模拟用户在浏览器上的操作。
支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等

一、selenium环境搭建
1.浏览器插件安装
katalon recorder插件是用来录制浏览器访问网站的脚本,可以另存为Java,python各种语言的脚本,katalon可支持各种浏览器
Tryxpath安装方式与Katalon一致
安装成功后,会出现绿色的图标


2.selenium环境安装
selenium下载链接:http://selenium-release.storage.googleapis.com/index.html
在eclipse创建java工程,将文件夹中的jar包导入Java工程,就可以进行Java脚本编写了,也可以用Maven引入

3. Eclipse+JDK+Maven环境安装
1.在官网下载JDK1.8及以上版本,安装,配置环境变量
2.在官网下载EclipseEclipse,解压
3.在官网下载Maven
解压到指定目录
在环境变量中新增变量MAVEN_HOME= E:\apache-maven-3.6.1
在path末尾添加%MAVEN_HOME%\bin
在命令行输入:mvn –version,出现如下,则表示安装成功
4.在Eclipse下配置Maven
在Eclipse菜单WindowprefencesMavenInstallation窗口中点击Add,添加Maven文件所在路径
在Eclipse菜单WindowprefencesJavaInstalled JRES路径下,确认安装的是jdk不是jre,否则会报错
5.Eclipse中创建一个Maven项目
Eclipse-->NewOtherMavenMaven Project
6.Eclipse安装TestNG
打开菜单helpInstall New SoftWare
在Work with中输入http://beust.com/eclipse,点击Add
在弹出窗口中输入TestNG,点击OK
勾选TestNG复选框,点击Next,Next
接受协议,点击Finish,等待安装,完成
二、selenium元素定位
元素定位方式:
根据ID定位
id=top-signup
根据name定位
name=product
根据超链接定位
link=场景
根据css定位
a#top-btn-login
button.btn.btn-lg.btn-primary.mgl160
css=input[class='ui-input'][name='password']
根据xpath定位
//button[@class='btn btn-lg btn-primary mgl160']
//input[@class='ui-input' and @name='password']
//header[@class='navbar']/div/nav/ul/li[3]/a
三、元素定位小插件
katalon recorder插件

Try xpath插件

四、模拟页面操作
1.页面跳转
1 import org.openqa.selenium.WebDriver;
2 import org.openqa.selenium.chrome.ChromeDriver;
3
4 public class Test001 {
5 public static void main(String[] args) {
6 System.setProperty("webdriver.chrome.driver", "E:\\BrowserDriver\\chromedriver.exe");
7 WebDriver driver = new ChromeDriver();//调用谷歌浏览器控件
8 driver.get("http://www.eteams.cn/");
9 }
10 }
2.鼠标点击
1 import org.openqa.selenium.By;
2 import org.openqa.selenium.WebDriver;
3 import org.openqa.selenium.chrome.ChromeDriver;
4
5 public class Test001 {
6 /**
7 * @param args
8 */
9 public static void main(String[] args) {
10 System.setProperty("webdriver.chrome.driver", "E:\\BrowserDriver\\chromedriver.exe");
11 WebDriver driver = new ChromeDriver();
12 driver.get("http://www.eteams.cn/");
13 // 点击登录按钮
14 driver.findElement(By.id("top-btn-login")).click();
15 }
16 }
3.键盘输入
1 import org.openqa.selenium.By;
2 import org.openqa.selenium.WebDriver;
3 import org.openqa.selenium.chrome.ChromeDriver;
4
5 public class Test001 {
6 /**
7 * @param args
8 */
9 public static void main(String[] args) {
10 System.setProperty("webdriver.chrome.driver", "E:\\BrowserDriver\\chromedriver.exe");
11 WebDriver driver = new ChromeDriver();
12 driver.get("http://www.eteams.cn/");
13 // 点击登录按钮
14 driver.findElement(By.id("top-btn-login")).click();
15 // 输入账号,密码,点击登录
16 driver.findElement(By.id("username")).sendKeys("test0001@126.com");
17 driver.findElement(By.id("password")).sendKeys("test12434");
18 driver.findElement(By.xpath("//button[@class='btn btn-lg btn-primary mgl160']")).click();
19 }
20 }
4.键盘组合输入
1 driver.findElement(By.xpath("//body")).sendKeys(Keys.chord(Keys.CONTROL, "a"));
5.Iframe跳转
1 // 跳进文本内容编辑第一个iframe
2 driver.switchTo().frame(docManagePo.neededitIframe());
3
4 //从iframe跳转回首页
5 driver.switchTo().defaultContent();
五、时间等待
1 //1.设置休眠时间
2 Thread.sleep(3000);
3
4 //2.全局的隐式等待
5 driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
6
7 //3.指定控件的显示等待
8 WebDriverWait wait = new WebDriverWait(driver, 60);
9 wait.until(ExpectedConditions.elementToBeClickable(portalPagePo.docment()));
六、参数化
1.通过配置文件参数化
1 import java.io.FileInputStream;
2 import java.io.FileNotFoundException;
3 import java.io.IOException;
4 import java.util.Properties;
5
6 /***
7 * 读取配置文件工具类
8 * @author xiaolin
9 *
10 */
11 public class ReadForConfigUtils {
12 public Properties pro = null;
13
14 /***
15 * 构造方法通过反射来读取配置文件,不用写相对路径
16 */
17 public ReadForConfigUtils() {
18 try {
19 pro = new Properties();
20 FileInputStream file = new FileInputStream("C:\\seleniumWorkspace\\end2endproject\\src\\resources\\GlobalData.properties");
21 pro.load(file);
22 //pro.load(ReadForConfigUtils.class.getClassLoader().getResourceAsStream("GlobalData.properties"));
23 } catch (IOException e1) {
24 e1.printStackTrace();
25 }
26
27 }
28
29
30 public String getKeyValue(String key) {
31 String value = pro.getProperty(key);
32
33 return value;
34 }
35
36
37 public static void main(String[] args) {
38 ReadForConfigUtils utils = new ReadForConfigUtils();
39 String username = utils.getKeyValue("url");
40 System.out.println(username);
41 }
42 }
2.通过excel文件参数化
1 import java.io.FileInputStream;
2 import java.io.IOException;
3
4 import org.apache.poi.xssf.usermodel.XSSFCell;
5 import org.apache.poi.xssf.usermodel.XSSFRow;
6 import org.apache.poi.xssf.usermodel.XSSFSheet;
7 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
8
9 /****
10 * 读书Excel文件的数据,并以二维数组的形式返回
11 * @author xiaolin
12 *
13 */
14 public class GetExcelDataUtil {
15 public Object[][] getExcelData(String excelPath,String sheetName) throws IOException {
16 // 使用Java的IO类从磁盘中读取excel文件
17 FileInputStream fs = new FileInputStream(excelPath);
18 // 创建一个XSSFWorkBook对象
19 XSSFWorkbook wb = new XSSFWorkbook(fs);
20 // 获取指定的sheet页
21 XSSFSheet sh = wb.getSheet(sheetName);
22 // 总行数是根据下标为0开始的,比如行数为3行,则值为2
23 // 总列数就是实际的列数,比如列数为2列,则值为2
24 // 获取总列数
25 int totalOfCols = sh.getRow(0).getLastCellNum();
26 // 获取总行数
27 int totalOfRows = sh.getLastRowNum();
28 // 定义一个二维数组来存放
29 Object[][] excelDatas = new Object[totalOfRows][totalOfCols];
30 for (int i = 1; i < totalOfRows + 1; i++) {
31 // row和cell都是从0开始
32 // 获取指定行的数据
33 XSSFRow row = sh.getRow(i);
34 for (int j = 0; j < totalOfCols; j++) {
35 // 获取指定单元格的数据
36 XSSFCell cell = row.getCell(j);
37 excelDatas[i - 1][j] = cell.getStringCellValue();
38 System.out.println("excelDatas[" + (i) + "][" + j + "]:" + excelDatas[i - 1][j]);
39 }
40
41 }
42 return excelDatas;
43 }
44 }
java+selenium UI自动化001的更多相关文章
- 测试自动化:java+selenium3 UI自动化(2) - 启动Firefox
1. selenium和浏览器 基于selenium的这套自动化体系,其实现关键就在于对于各浏览器的顺畅操作. 事实上当selenium刚开始起家的时候,他使用的还是javascript注入的方式来驱 ...
- 测试自动化:java+selenium3 UI自动化(1) - 环境搭建
1.前言 我大概是在2012年第一次正式接触到自动化测试,那个时候跟随我的团队一起,就当时项目的UI自动化尝试做出了探索. 在我离开那家公司的时候,我们的自动化测试体系仍然难言完美,但是也已经达到了非 ...
- 基于Selenium2+Java的UI自动化(1) - 原理和环境搭建
一.Selenium2的原理 Selenium1是thoughtworks公司的一个产品经理,为了解决重复烦躁的验收工作,写的一个自动化测试工具,其原理是用JS注入的方 式来模拟人工的操作,但是由于J ...
- 基于Selenium2+Java的UI自动化(4) - WebDriver API简单介绍
1. 启动浏览器 前边有详细介绍启动三种浏览器的方式(IE.Chrome.Firefox): private WebDriver driver = null; private String chrom ...
- 基于Selenium2+Java的UI自动化(8)- 显式等待和隐式等待
一.隐式等待 package com.automation.waits; import java.util.concurrent.TimeUnit; import org.openqa.seleniu ...
- selenium UI自动化解决验证码的五种方法
TesseractPy3.py #coding=utf-8 import os import subprocess import traceback import logging from PIL i ...
- 基于Selenium2+Java的UI自动化(5) - 执行JavaScript脚本
一.操作日期选择框 QQ图片20161118215530.png1336x545 22.6 KB 说明:日期选择框大部分是不支持前端输入的,因为这个对象是 readOnly,只读属性,selenium ...
- 基于Selenium2+Java的UI自动化(2) - 启动浏览器
一.准备工作 我们常用的浏览器主要有三个:chrome.Firefox.IE:其中chrome 和 IE 需要下载驱动程序,才能启动浏览器,注意驱动程序有32位和64位两种. 另外:如何查看本机的浏览 ...
- 基于Selenium2+Java的UI自动化(6)-操作Alert、confirm、prompt弹出框
alert.confirm.prompt这样的js对话框在selenium1 时代处理起来比价麻烦,常常要用autoit来帮助处理.而现在webdriver对这些弹出框做了专门的处理,使用seleni ...
随机推荐
- Docker学习(1) 初识
Docker的使用场景 1 使用Docker容器开发,测试,部署服务 2 创建隔离的运行环境 3 搭建测试环境 4 构建多用户的平台及服务(PaaS)基础设施 5 提供软件即服务(SaaS)应用程序 ...
- Fiddler抓包后转成jmeter脚本
Fiddler的安装及使用 1.安装:无特别需要注意事项 2.使用: (1)目前我使用的是Fiddler 4版本,打开页面如下 (2)如下图,在界面右侧找到Filters tabs,根据需要进行设置, ...
- 第一个 Angular 应用程序
node download https://nodejs.org/zh-cn/ 全局安装 npm install @angular/cli -g 指定版本 npm install @angular/c ...
- 摄像头ISP系统原理(下)
摄像头ISP系统原理(下) l WDR(Wide Dynamic Range)------宽动态 动态范围(Dynamic Range)是指摄像机支持的最大输出信号和最小输出信号的比值,或者说图像最 ...
- TVM图优化与算子融合
TVM图优化与算子融合 计算图的定义 Computational graphs: a common way to represent programs in deep learning framewo ...
- TensorFlow多元线性回归实现
多元线性回归的具体实现 导入需要的所有软件包: 因为各特征的数据范围不同,需要归一化特征数据.为此定义一个归一化函数.另外,这里添加一个额外的固定输入值将权重和偏置结合起来.为此定义函数 appe ...
- JavaScript 中的延迟加载属性模式
传统上,开发人员在 JavaScript 类中为实例中可能需要的任何数据创建属性.对于在构造函数中随时可用的小块数据来说,这不是问题.但是,如果在实例中可用之前需要计算某些数据,您可能不想预先支付该费 ...
- Redis 性能问题分析
在一些网络服务的系统中,Redis 的性能,可能是比 MySQL 等硬盘数据库的性能更重要的课题.比如微博,把热点微博[1],最新的用户关系,都存储在 Redis 中,大量的查询击中 Redis,而不 ...
- 【模拟8.09】建设城市(city) (容斥)
放在了考试T1 发现70分的DP很水啊,f[i][j]为当前位置是i分配了j个队的方案 我们用前缀和统计,在将i删去,j倒序枚举,就可以删掉一维(也可以滚动数组滚起来) 1 #include<i ...
- docker创建和使用mysql
container和image是两种不同的概念,image即指存在的镜像,container指docker运行起来后image的实例. 当使用docker kill 把某个正在运行的实例kill掉之后 ...