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 ...
随机推荐
- TVM代码生成codegen
TVM代码生成codegen 硬件后端提供程序(例如Intel,NVIDIA,ARM等),提供诸如cuBLAS或cuDNN之类的内核库以及许多常用的深度学习内核,或者提供框架例,如带有图形引擎的DNN ...
- i.MX6UL: i.MX 6UltraLite处理器 - 低功耗,安全,Arm® Cortex®-A7内核
i.MX6UL: i.MX 6UltraLite处理器 - 低功耗,安全,Arm Cortex-A7内核 概述 MX6UltraLite作为i.MX6系列的扩展,一系列高性能.超高效的处理器,采用先进 ...
- Octave Convolution卷积
Octave Convolution卷积 MXNet implementation 实现for: Drop an Octave: Reducing Spatial Redundancy in Conv ...
- MinkowskiBroadcast广播
MinkowskiBroadcast广播 MinkowskiBroadcastAddition广播加法 class MinkowskiEngine.MinkowskiBroadcastAddition ...
- 图分析Rapids cuGraph
图分析Rapids cuGraph 英伟达(Nvidia)建立的新的开源库可能是推进分析和使图形数据库更快的秘密要素. 在Nvidia GPU上进行并行处理. Nvidia很久以前就不再只是" ...
- 适用于AMD ROC GPU的Numba概述
适用于AMD ROC GPU的Numba概述 Numba通过按照HSA执行模型将Python代码的受限子集直接编译到HSA内核和设备功能中,从而支持AMD ROC GPU编程.用Numba编写的内核似 ...
- 《python网络数据采集》笔记1
第一部分-创建爬虫 1.urllib 1)urllib.request request.urlopen(url) request.urlretrieve 可以根据文件的 URL 下载文件 2)urll ...
- 深入Netty逻辑架构,从Reactor线程模型开始
本文是Netty系列第6篇 上一篇文章我们从一个Netty的使用Demo,了解了用Netty构建一个Server服务端应用的基本方式.并且从这个Demo出发,简述了Netty的逻辑架构,并对Chann ...
- JVM 内存溢出 实战 (史上最全)
文章很长,建议收藏起来,慢慢读! 疯狂创客圈为小伙伴奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : <Netty Zookeeper Redis 高并发实战> 面试必备 + 大厂必备 ...
- noip2011 总结
铺地毯 题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯.一共有 n 张地毯,编号从 1 到n .现在将这些地毯按照编号从小到大的顺 ...