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. Go语言的函数01---概念

    package main import "fmt" /* 向某人致以问候 参数: name string类型,要问候的对象 n int类型,要问候的次数 返回值: string类型 ...

  2. nvGRAPH三角形计数和遍历示例

    nvGRAPH三角形计数和遍历示例 #include " stdlib.h" #include" inttypes.h" #include" stdi ...

  3. IaaS、PaaS 和 SaaS:云服务模型概述

    IaaS.PaaS 和 SaaS:云服务模型概述 为您的组织选择合适的云服务模型,可以帮助您充分利用预算和 IT 资源. 基础设施即服务 (IaaS).平台即服务 (PaaS) 以及软件即服务 (Sa ...

  4. 部署通用基础设施, 满足顶级 SLA 要求

    部署通用基础设施, 满足顶级 SLA 要求 Telefónica 使用基于英特尔 至强 可扩展处理器和英特尔 傲腾 数据中心级固态盘 的 VMware 虚拟存储区域网络 (vSAN)* 架构,完成对高 ...

  5. Gbps接口面向汽车应用

    Gbps接口面向汽车应用 Gbps interfaces target automotive appications 巴黎--不久前,移动通信行业是一个领着芯片商的领头羊,命令坐着,脚跟着,然后翻身. ...

  6. C语言编译器开发之旅(二):解析器

    本节是我们这个编译器系列的第二节,进入语法分析与语义分析的部分解.在本节我们会编写一个简单的解析器. 解析器的主要功能分为两个部分: 识别输入的语法元素生成AST(Abstract Syntax Tr ...

  7. 详解Apache Dubbo的SPI实现机制

    一.SPI SPI全称为Service Provider Interface,对应中文为服务发现机制.SPI类似一种可插拔机制,首先需要定义一个接口或一个约定,然后不同的场景可以对其进行实现,调用方在 ...

  8. 使用mockjs模拟分页请求

    首先安装mockjs npm install mockjs --save-dev 创建mock.js //mock.js const Mock = require("mockjs" ...

  9. jQuery04

    jQuery内容总结: 1.既然是一个js库,使用之前就要引入js库,是一个.js文件,版本是1.8.3: 2.写一个jQuery页面加载函数(注意与js页面加载函数的区别): $(function( ...

  10. 题解 P3233 [HNOI2014]世界树

    题目传送门 解题思路 正解当然是虚树了. 首先对于原树以及虚树各开一个结构体存边,这个不用多说. 然后我们先 DFS 一遍,求出各个节点的时间戳,子树大小,深度以及父亲节点,并初始化倍增 LCA . ...