比如界面有一个按钮,id号是test。如果进行对象化的话,就是test.click就可以了。不用每次都要去创建test对象。如果id号变了,我们也只需要改一下test的名称就行了。

使用Yaml需要用到下载jyaml的jar包。下载地址是http://www.java2s.com/Code/Jar/j/Downloadjyaml13jar.htm

TestBaidu.yaml

baidu_button:
type:id
value:su
baidu_input:
type:id
value:kw

aaarticlea/png;base64,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" alt="" />

解析yaml类 YamlUtil.java

package com.test.util;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.HashMap;
import java.util.Map; import org.ho.yaml.Yaml;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement; public class YamlUtil {
private String yamlfile;
private WebDriver driver;
private Map<String,Map<String,String>> ml;
public YamlUtil(WebDriver driver,String yamlFilePath){
this.yamlfile =yamlFilePath;
this.driver=driver;
getYamlFile();
}
public void getYamlFile(){
File f = new File(this.yamlfile); try {
ml= Yaml.loadType(new FileInputStream(f.getAbsolutePath()), HashMap.class);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//创建by对象
private By getBy(String key){
By by = null;
if (ml.containsKey(key)){
Map<String,String> m = ml.get(key);
String type = m.get("type");
String value = m.get("value");
switch(type){
case "id":
by = By.id(value);
break;
case "name":
by = By.name(value);
break;
case "xpath":
by = By.xpath(value);
break;
case "class":
by = By.className(value);
break;
case "linkText":
by = By.linkText(value);
break;
case "cssSelector":
by= By.cssSelector(value);
break;
}
}
else
{
System.out.println("Locator "+key+" is not exist in "+yamlfile);
}
return by;
}
//根据名称 返回webElement对象
public WebElement getElement(String key){
By by = this.getBy(key);
WebElement element = driver.findElement(by);
return element;
}
}

调用:

package info.milan.webdriver;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.AfterClass;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test; import com.test.util.YamlUtil; import common.Assertion; public class day10 {
public WebDriver Driver;
public YamlUtil myYaml;
//case,suit单元用例里面,存在多个case可以成为一个簇
//每个class执行之前调用
@BeforeClass
public void Bclass(){
///浏览器初始化
Driver = new FirefoxDriver();
Driver.manage().window().maximize();
//加载yaml文件
myYaml = new YamlUtil(Driver,"yamlFile/TestBaidu.yaml");
}
//每个用例执行之前调用
@BeforeMethod
public void setup(){
Driver.navigate().to("https://www.baidu.com");
}
//每个用例执行完毕之后调用
@AfterMethod
public void teardown(){
}
//每个class执行之后调用
@AfterClass
public void Aclass(){
///浏览器关闭
Driver.close();
Driver.quit();
}
//测试用例数据
@DataProvider(name="logOutDataPro")
public Object[][]loginOutData(){
return new Object[][]{{"1"},{"很长很长的观坚持"},{"特殊字符+!@¥"}};
}
//执行测试用例
@Test(dataProvider="logOutDataPro")
public void baidu(String info){
//获取webElement
WebElement baiduInput = myYaml.getElement("baidu_input");
baiduInput.clear();
baiduInput.sendKeys(info);
WebElement baiduButton = myYaml.getElement("baidu_button");
baiduButton.click();
}
}

selenium2入门 用Yaml文件进行元素管理 (五)的更多相关文章

  1. selenium2 用Yaml文件进行元素管理 (五)

    比如界面有一个按钮,id号是test.如果进行对象化的话,就是test.click就可以了.不用每次都要去创建test对象.如果id号变了,我们也只需要改一下test的名称就行了. 使用Yaml需要用 ...

  2. 用Yaml文件进行元素管理【转】

    原文:http://www.cnblogs.com/milanmi/p/4636503.html 如界面有一个按钮,id号是test.如果进行对象化的话,就是test.click就可以了.不用每次都要 ...

  3. 入门Kubernetes - YAML文件

    前言 前篇文章中简单了解到如何把.Net Core 程序部署到k8s中,过程中使用了多个*.yaml文件,那么这些文件的格式及含义.语法是如何的呢? 接下来,进一步了解学习 一.YAML介绍: 1.简 ...

  4. SpringCloud入门之YAML格式文件规范学习

    1. 认识 YAML YAML(发音 /ˈjæməl/)是一个类似 XML.JSON 的数据序列化语言.其强调以数据为中心,旨在方便人类使用:并且适用于日常常见任务的现代编程语言.因而 YAML 本身 ...

  5. python_selenium 之yaml文件读取(以读取元素信息为例)

    一.yaml源文件编写 二.对yaml文件内容的读取 #coding=gbkimport osimport yamlcurrent_path=os.path.dirname(__file__)yaml ...

  6. Selenium2入门(二)WebDriver

    前文Selenium2入门(一)说到Selenium是Web 应用程序测试框架,那么如果对一个简单的web应用需求:打开浏览器,登录百度首页,输入“欧洲杯”关键词,点击搜索按钮 这一系列操作,能否用S ...

  7. Kubernetes之YAML文件

    一.YAML 基础 YAML是专门用来写配置文件的语言,非常简洁和强大,使用比json更方便.它实质上是一种通用的数据串行化格式.后文会说明定义YAML文件创建Pod和创建Deployment. YA ...

  8. [转帖]从零开始入门 K8s:应用编排与管理:Job & DaemonSet

    从零开始入门 K8s:应用编排与管理:Job & DaemonSet https://www.infoq.cn/article/KceOuuS7somCYbfuykRG 陈显鹭 阅读数:193 ...

  9. (五)Linux之文件与目录管理以及文本处理

    Linux之文件与目录管理 目录 Linux之文件与目录管理 前言 绝对路径与相对路径说明: 一.目录常用命令 常用处理目录的命令: 切换目录 cd 显示当前路径 pwd 查看目录下文件 ls 创建目 ...

随机推荐

  1. nodejs 递归创建目录

    nodejs没有递归创建目录的方法,以前创建的时候是将目录通过path.sep,然后再一步步判断,这个方法在windows下面遇到盘符的时候,然后蛋疼了.今天又用到了这个功能,突然想到了另外一种方法, ...

  2. 关于.NET,.NET Framework 和ASP.NET的总结

    .NET 1.1.        .NET是 Microsoft XML Web services 平台和技术. 1.2.        一个.NET应用是一个运行于.NET Framework之上的 ...

  3. 简单工厂模式—>工厂模式

    一.功能 根据前一篇博客:策略模式+单例模式+简单工厂模式:推送服务,想试用一下工厂模式:将之前的简单工厂模式格式化为工厂模式. 二.实现 修改前:简单工厂 public static class P ...

  4. HTML与XHTML差额

    实际上.XHTML 与 HTML 4.01 标准没有太多的不同. 它们最基本的不同.举例说明例如以下: 1.XHTML 元素必须被正确地嵌套. 错误:<p><span>this ...

  5. Redis系列之(二):Redis主从同步,读写分离(转)

    1. Redis主从同步 Redis支持主从同步.数据可以从主服务器向任意数量的从服务器上同步,同步使用的是发布/订阅机制. 2. 配置主从同步 Mater Slave的模式,从Slave向Maste ...

  6. Android Studio简单设置(转)

    Android Studio 简单设置 界面设置 默认的 Android Studio 为灰色界面,可以选择使用炫酷的黑色界面.Settings --> Appearance --> Th ...

  7. java 生产者消费者问题 并发问题的解决(转)

    引言 生产者和消费者问题是线程模型中的经典问题:生产者和消费者在同一时间段内共用同一个存储空间,如下图所示,生产者向空间里存放数据,而消费者取用数据,如果不加以协调可能会出现以下情况: 生产者消费者图 ...

  8. iOS UISearchDisplayController学习笔记

    UISearchDisplayController和UISearchBar一起使用用来管理UISearchBar和搜索结果的展示.UISearchDisplayController提供了显示搜索结果的 ...

  9. HDU 3366 Passage (概率DP)

    Passage Problem Description Bill is a millionaire. But unfortunately he was trapped in a castle. The ...

  10. JQUERY省、市、县城市联动选择

    JQUERY 插件开发——CITYLINKAGE(省.市.县城市联动选择) 第一部分:背景   开发源于需求,本次城市联动选择插件算是我写插件的一个特例吧,不是我目前工作需要些的,算是兴趣驱使吧.之前 ...