比如界面有一个按钮,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. 无法使用SQL login去登陆SQL Server - 'Password did not match'

    原文:无法使用SQL login去登陆SQL Server - 'Password did not match' 出自:http://blogs.msdn.com/b/apgcdsd/archive/ ...

  2. ASP.NET5 Beta8

    ASP.NET5 Beta8 ASP.NET5 beta8现已上都的NuGet作为一个工具升级到Visual Studio2015!此版本极大地扩展.NET核心对OS X和Linux所支持的范围.您现 ...

  3. 使用JS意识到自己主动提交表单

    今天将需要chat集成到客户的网站上去,注册用户链接登录这个网站后点击实现网站直接登录chat向上.我不停chat原来的登录界面,采纳JS当页面跳转技术,随着时间的推移自己主动填写表格.自己主动提交表 ...

  4. Linux下is not in the sudoers file(转)

    用sudo时提示"xxx is not in the sudoers file. This incident will be reported.其中XXX是你的用户名,也就是你的用户名没有权 ...

  5. C#中假设正确使用线程Task类和Thread类

    C#中使用线程Task类和Thread类小结 刚接触C#3个月左右.原先一直使用C++开发.由于公司的须要,所地採用C#开发.主要是控制设备的实时性操作,此为背景. 对于C#中的Task和Thread ...

  6. mysql子查询慢的问题

      当你在用explain工具查看sql语句的运行计划时.若select_type 字段中出现"DEPENDENT SUBQUERY"时,你要注意了.你已经掉入了mysql子查询慢 ...

  7. robot framework环境搭建(转)

    一. robot framework环境搭建: 官网:http://robotframework.org/ 序号 安装包名 安装方法 下载地址 备注 1 python exe文件,直接双击安装 htt ...

  8. 【LeetCode】 String中的最长回文

    java 普通版: 1.正序遍历数组,取得子字符串的首字母. 2.倒序遍历数组,取的子字符串的尾字母. (这样仅仅要在子循环中第一个出现回文,那么该回文肯定是本次循环的最长的回文) 3.新增数据结构, ...

  9. 2077 汉诺塔IV

    Problem Description 还记得汉诺塔III吗?他的规则是这样的:不允许直接从最左(右)边移到最右(左)边(每次移动一定是移到中间杆或从中间移出),也不允许大盘放到小盘的上面.xhd在想 ...

  10. 玩转Vim-札记

    玩转Vim-札记 距上篇博文已有一周有余,上次主要介绍了编辑器之神Vim的起源.安装并介绍了两种模式以及一些简单的操作.本次将继续对Vim的使用进行介绍. 登堂入室 首先接着说移动吧: 1 0 → 数 ...