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. OFRecord 数据集加载

    OFRecord 数据集加载 在数据输入一文中知道了使用 DataLoader 及相关算子加载数据,往往效率更高,并且学习了如何使用 DataLoader 及相关算子. 在 OFrecord 数据格式 ...

  2. Yolov4性能分析(上)

    Yolov4性能分析(上) 一.目录 实验测试 1) 测试介绍 2) Test 3) Train 二.   分析 1.实验测试 1. 1  实验测试方法 Yolov4训练train实验方法(Darkn ...

  3. 导出 Excel 模板自动生成规则,避免用户来回修改

    一句话总结 Excel 导出.导入时,根据注解自动添加单元格验证规则,避免用户因填写错误的枚举字段而反复修改 Excel 需求背景 对于 Java Web 项目,总是不可避免的出现 Excel 导入. ...

  4. 使用VS code编写C++无法实时检测代码的解决办法

    更新:其实微软是有官方文档配置VS code 的C++的.地址是: https://code.visualstudio.com/docs/cpp 更改工作区后就发现不能再使用VS CODE愉快地写C+ ...

  5. 从架构师角度谈谈mybatis-plus可能存在的问题

    存在这么一个情况:对于缺营养的人来说,医生更倾向于建议他选择纯牛奶,而不是有机奶(因其有添加剂).然而,大部分人却更加倾向于选择有机奶, 因其口感不错,因此,对于选择纯牛奶还是有机奶,这是个博弈问题. ...

  6. sqlsever 创建一个通用分页查询

    -- Author: Mis Chen-- Create date: 2018年5月15日 11:21:47-- Description: 创建一个通用分页查询-- ================= ...

  7. 小白学k8s(8)-Bazel部署go应用

    Bazel使用了解 Bazel产生的背景 什么是Bazel 快(Fast) 可伸缩(scalable) 跨语言(multi-language) 可扩展(extensible) Bazel中的主要文件 ...

  8. 一个SQLServer中JSON文档型数据的查询问题

    近日在项目中遇到一个问题: 如何在报表中统计JSON格式存储的数据? 例如有个调查问卷记录表,记录每个问题的答案. 其结构示意如下(横表设计) Id user date Q1_Answer Q2_An ...

  9. LCD1602液晶显示模块的单片机驱动深入详解之硬件篇

    (本文以HD44780主控芯片的LCD1602为蓝本进行描述,其中的截图也来自HD44780数据手册,用户可自行搜索其datasheet,有部分整理网上的,但绝对要比你看到的要深入得多) 一.接口 L ...

  10. .NET Core/.NET5/.NET6 开源项目汇总8:Blazor项目

    系列目录     [已更新最新开发文章,点击查看详细] Blazor 是一个使用 .NET 生成交互式客户端 Web UI 的框架: 使用 C# 代替 JavaScript 来创建信息丰富的交互式 U ...