比如界面有一个按钮,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. (五)Linux之文件与目录管理以及文本处理

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

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

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

  5. YAML文件简介

    编程免不了要写配置文件,怎么写配置也是一门学问. YAML 是专门用来写配置文件的语言,非常简洁和强大,远比 JSON 格式方便. 本文介绍 YAML 的语法,以 JS-YAML 的实现为例.你可以去 ...

  6. Kubernetes之YAML文件

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

  7. Python基础笔记1-Python读写yaml文件(使用PyYAML库)

    最近在搭建自动化测试项目过程中经常遇到yaml文件的读写,为了方便后续使用,决定记下笔记. 一,YAML 简介 YAML,Yet Another Markup Language的简写,通常用来编写项目 ...

  8. 入门Kubernetes - YAML文件

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

  9. 6.K8s集群升级、etcd备份和恢复、资源对象及其yaml文件使用总结、常用维护命令

    1.K8s集群升级 集群升级有一定的风险,需充分测试验证后实施 集群升级需要停止服务,可以采用逐个节点滚动升级的方式 1.1 准备新版本二进制文件 查看现在的版本 root@k8-master1:~# ...

随机推荐

  1. ngxtop实时监控nginx状态

    ngxtop实时解析nginx访问日志,并且将处理结果输出到终端,功能类似于系统命令top,所以这个软件起名ngxtop.有了ngxtop,你可以实时了解到当前nginx的访问状况,再也不需要tail ...

  2. verilog case 语句合并问题

    有时候在case语句中会有不同选择执行相同操作的情况,为了简化代码,可以将其合并. 以下解答来自百度知道(由于排版问题,有相应修改): reg [1:0]addr_cnt=2'b11; reg rea ...

  3. c++ 基础知识 0001 const 知识2

    1.const修饰函数返回值 (1)指针传递 如果返回const data,non-const pointer,返回值也必须赋给const data,non-const pointer.因为指针指向的 ...

  4. HDU - 5289:Assignment(单调队列||二分+RMQ||二分+线段树)

    Tom owns a company and he is the boss. There are n staffs which are numbered from 1 to n in this com ...

  5. MyEclipse2014安装操作步骤+破解

    第一步 第二步 第三步 第四步 第五步 第六步 破解操作步骤 1.安装完成 MyEclipse2014(适用于 2013 等版本)后,不要打开软件.解压破解文件压缩包,得到一下文件列表:双击 run. ...

  6. 剑指offer-第五章优化时间和空间效率(连续子数组的最大和)

    题目:输入一个数组,数组中有正也有负,数组中连续的一个或者连续的多个数字组成一个子数组.求所有的子数组和的最大值.要求时间复杂度为O(n) 思路:我们的最直观的想法就是求出这个数组中的所有的子数组,然 ...

  7. centos6.5 安装nginx

    安装之前先安装VMware tools(方便于从windows上拷贝文件到linux) 1. nginx安装环境 nginx是C语言开发,建议在linux上运行,本次使用Centos6.5作为安装环境 ...

  8. 【LeetCode】汇总

    此贴为汇总贴 673. Number of Longest Increasing Subsequence 075. Sort Colors 009. Palindrome Number 008. St ...

  9. INSTALL_FAILED_SHARED_USER_INCOMPATIBLE的问题

    eclipse编译出来的apk,安装时报出INSTALL_FAILED_SHARED_USER_INCOMPATIBLE的错误. 原因:apk的AndroidManifest.xml中声明了andro ...

  10. (转)Android 自定义 spinner (背景、字体颜色)

    Android 自定义 spinner (背景.字体颜色) (2012-07-04 17:04:44)   1.准备两张图片,并做好9.png   2.在drawable中定义spinner_sele ...