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菜单WindowprefencesMavenInstallation窗口中点击Add,添加Maven文件所在路径
在Eclipse菜单WindowprefencesJavaInstalled JRES路径下,确认安装的是jdk不是jre,否则会报错
5.Eclipse中创建一个Maven项目
Eclipse-->NewOtherMavenMaven Project
6.Eclipse安装TestNG
打开菜单helpInstall 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的更多相关文章

  1. 测试自动化:java+selenium3 UI自动化(2) - 启动Firefox

    1. selenium和浏览器 基于selenium的这套自动化体系,其实现关键就在于对于各浏览器的顺畅操作. 事实上当selenium刚开始起家的时候,他使用的还是javascript注入的方式来驱 ...

  2. 测试自动化:java+selenium3 UI自动化(1) - 环境搭建

    1.前言 我大概是在2012年第一次正式接触到自动化测试,那个时候跟随我的团队一起,就当时项目的UI自动化尝试做出了探索. 在我离开那家公司的时候,我们的自动化测试体系仍然难言完美,但是也已经达到了非 ...

  3. 基于Selenium2+Java的UI自动化(1) - 原理和环境搭建

    一.Selenium2的原理 Selenium1是thoughtworks公司的一个产品经理,为了解决重复烦躁的验收工作,写的一个自动化测试工具,其原理是用JS注入的方 式来模拟人工的操作,但是由于J ...

  4. 基于Selenium2+Java的UI自动化(4) - WebDriver API简单介绍

    1. 启动浏览器 前边有详细介绍启动三种浏览器的方式(IE.Chrome.Firefox): private WebDriver driver = null; private String chrom ...

  5. 基于Selenium2+Java的UI自动化(8)- 显式等待和隐式等待

    一.隐式等待 package com.automation.waits; import java.util.concurrent.TimeUnit; import org.openqa.seleniu ...

  6. selenium UI自动化解决验证码的五种方法

    TesseractPy3.py #coding=utf-8 import os import subprocess import traceback import logging from PIL i ...

  7. 基于Selenium2+Java的UI自动化(5) - 执行JavaScript脚本

    一.操作日期选择框 QQ图片20161118215530.png1336x545 22.6 KB 说明:日期选择框大部分是不支持前端输入的,因为这个对象是 readOnly,只读属性,selenium ...

  8. 基于Selenium2+Java的UI自动化(2) - 启动浏览器

    一.准备工作 我们常用的浏览器主要有三个:chrome.Firefox.IE:其中chrome 和 IE 需要下载驱动程序,才能启动浏览器,注意驱动程序有32位和64位两种. 另外:如何查看本机的浏览 ...

  9. 基于Selenium2+Java的UI自动化(6)-操作Alert、confirm、prompt弹出框

    alert.confirm.prompt这样的js对话框在selenium1 时代处理起来比价麻烦,常常要用autoit来帮助处理.而现在webdriver对这些弹出框做了专门的处理,使用seleni ...

随机推荐

  1. TVM代码生成codegen

    TVM代码生成codegen 硬件后端提供程序(例如Intel,NVIDIA,ARM等),提供诸如cuBLAS或cuDNN之类的内核库以及许多常用的深度学习内核,或者提供框架例,如带有图形引擎的DNN ...

  2. i.MX6UL: i.MX 6UltraLite处理器 - 低功耗,安全,Arm® Cortex®-A7内核

    i.MX6UL: i.MX 6UltraLite处理器 - 低功耗,安全,Arm Cortex-A7内核 概述 MX6UltraLite作为i.MX6系列的扩展,一系列高性能.超高效的处理器,采用先进 ...

  3. Octave Convolution卷积

    Octave Convolution卷积 MXNet implementation 实现for: Drop an Octave: Reducing Spatial Redundancy in Conv ...

  4. MinkowskiBroadcast广播

    MinkowskiBroadcast广播 MinkowskiBroadcastAddition广播加法 class MinkowskiEngine.MinkowskiBroadcastAddition ...

  5. 图分析Rapids cuGraph

    图分析Rapids cuGraph 英伟达(Nvidia)建立的新的开源库可能是推进分析和使图形数据库更快的秘密要素. 在Nvidia GPU上进行并行处理. Nvidia很久以前就不再只是" ...

  6. 适用于AMD ROC GPU的Numba概述

    适用于AMD ROC GPU的Numba概述 Numba通过按照HSA执行模型将Python代码的受限子集直接编译到HSA内核和设备功能中,从而支持AMD ROC GPU编程.用Numba编写的内核似 ...

  7. 《python网络数据采集》笔记1

    第一部分-创建爬虫 1.urllib 1)urllib.request request.urlopen(url) request.urlretrieve 可以根据文件的 URL 下载文件 2)urll ...

  8. 深入Netty逻辑架构,从Reactor线程模型开始

    本文是Netty系列第6篇 上一篇文章我们从一个Netty的使用Demo,了解了用Netty构建一个Server服务端应用的基本方式.并且从这个Demo出发,简述了Netty的逻辑架构,并对Chann ...

  9. JVM 内存溢出 实战 (史上最全)

    文章很长,建议收藏起来,慢慢读! 疯狂创客圈为小伙伴奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : <Netty Zookeeper Redis 高并发实战> 面试必备 + 大厂必备 ...

  10. noip2011 总结

    铺地毯 题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯.一共有 n 张地毯,编号从 1 到n .现在将这些地毯按照编号从小到大的顺 ...