使用 appium+java 进行自动化测试,之前一直用的方法都是在代码中写入相关的数据参数,听说可以通过读取 excel 中的数据进行测试,但是一直没有找到相关的资料,希望哪位大神可以指点一下!!
driver.findElementByName("最多 30 个字").sendKeys("111");
打个比方,如上面 sendkeys 中的参数一直是在程序中手动输入,如何获取已经在 excel 中写好的某个数据来直接执行测试用例,而不用每次都要自己手动写入。
之前看过一些 java 的资料,难道是通过 poi 的方式来读取数据吗,那样是不是太麻烦了?
自己写个函数或者类去读文本的值不就行了。。
string getValue(int index)//通过序号获取值
driver.findElementByName().sendKeys(get(1));
这样就可以通过循环来执行了
用 poi 是下下策,有一万种方法实现,第三方插件、框架、自定义、数据库、xml、json,推荐 json
testng 框架里, 有 dataProvider 和 factory
我就路过来看看
easypoi
自定义一个读取 excel 的类就好了啊
就用 poi, 然后封装一层,按需写一个想要的工具类,里面的方法全部接收简单参数。执行测试时根据行数列数,JSON 或者 ColumnName 和 rowId 取数据就可以了吧。
你看看https://testerhome.com/topics/3526,我按这个贴搞出来的。
#5 楼 @511594204 我只是随便练练 markdown。这个问题其实真的就像上面的人说的有很多办法,自己琢磨写写代码,不管是 xml,txt,csv 读起来都挺简单的。没事的时候就自己写写读写 xml 的类。。
#13 楼 @cy_suncheng 1.定义存放测试数据的数据结构;
2.写个按数据结构解析 json,提取测试数据的类;
3.至于管理,git、svn、ftp。。。都可以管理 json 形式保存的测试数据;
这个问题我已经解决了,现在把实现的代码展现一下,希望能帮助到大家,如果大家有更好的方法希望不吝赐教!
import io.appium.java_client.TouchAction;
import io.appium.java_client.android.AndroidDriver;
import java.util.Set;
import org.openqa.selenium.WebElement;
import org.testng.annotations.Test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
public class leizhong {
public AndroidDriver driver;
public leizhong(AndroidDriver driver){
this.driver=driver;
}
@Test
public void swpie() throws Exception{
//获取当前的混合应用类型,判断如果是 webview 跳转进入 webview
Set contextNames = driver.getContextHandles();
for(String contextName : contextNames){
System.out.println(contextName);
if(contextName.contains("WEBVIEW")){
driver=(AndroidDriver) driver.context(contextName);
}else{
System.out.println("no WEBVIEW");
}
}
Thread.sleep(2000);
driver=(AndroidDriver) driver.context("NATIVE_APP");
WebElement loginBtn=driver.findElementByName("社区");
loginBtn.click();
Thread.sleep(20000);
System.out.println("社区");
Thread.sleep(2000);
WebElement loginBtn1=driver.findElementByName("糖友锻炼");
loginBtn1.click();
System.out.println("糖友锻炼");;
Thread.sleep(2000);
try{
File file = new File("d:\test.xls");
InputStream in = new FileInputStream(file);
Workbook workbook = Workbook.getWorkbook(in);
Sheet sheet = workbook.getSheet(0);
int rowLength=sheet.getRows();
System.out.println(rowLength);
for(int i=1;i<rowLength;i++){
Thread.sleep(3000);
driver.findElementByXPath("//android.widget.ImageView[contains(@index,2)]").click();
Thread.sleep(2000);
WebElement title=driver.findElementByName("最多 30 个字");
Cell c10=sheet.getCell(0,i);
String strc10=c10.getContents();
System.out.println(strc10);
title.sendKeys(strc10);
Thread.sleep(20000);
Cell c21=sheet.getCell(1,i);
String strc21=c21.getContents();
System.out.println(strc21);
driver.findElementById("com.qshealthcare.qshc:id/activity_publish_new_main_title_content_et").sendKeys(strc21);
Thread.sleep(2000);
driver.findElementByName("发布").click();
Thread.sleep(1000);
}
}catch(Exception e){
System.out.println("failed!");
}
System.out.println("success");
}
}
#15 楼 @511594204 markdown..这样看真吃力
学习一下。非常感谢
可以使用 testng 自带的 dataProvider
同意 TestNG 自带的 DataProvider 测试可以支持 Excel CSV 数组等多种方式