zoukankan      html  css  js  c++  java
  • 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%in
    在命令行输入: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 }

     

  • 相关阅读:
    初学设计模式【5】工厂方法模式——FactoryMethod
    Activity生命周期
    ACTIVITY状态保存
    初学设计模式【6】抽象工厂模式——AbstractFactory
    android Toast总结
    Android对话框总结
    【实用】无线调试android应用——ADB OVER NETWORK
    二分法求根与二分次数
    struts2__action执行顺序
    JDBC与Hibernate连接池
  • 原文地址:https://www.cnblogs.com/cjxxl1213/p/12733214.html
Copyright © 2011-2022 走看看