创建测试文件夹
在Idea项目src文件夹下创建test文件(Idea如果语句错误或者遗漏都可以检查出来,个人觉得好用一些),继续在test文件夹下创建java文件,然后设置文件夹属性为"Test Sources Root",以后生成的测试文件都要在java文件夹下;
如何连接夜魔/真机
1.启动夜魔,更正常手机一样设置,把它设置为开发者模式,终端敲入“adb connect 127.0.0.1:62001” 同时启动appium 服务器;
2.真机调成开发者模式,然后启动USB调试,终端敲入“adb devices” 同时启动appium 服务器;
3.借助sdk里面的工具tools目录下的uiautomatorviewer映射当前机器,启动“uiautomatorviewer”就能定位到索要找的元素
元素定位方法
一般通过以下方法进行定位id/name/classname/xpath,可通过uiautomatorviewer定位,name相对来比定位的比较多;
id定位:driver.find_element_by_id(resource-Id)、 driver.find_element_by_id("com.sankuai.meituan:id/search_edit")
name定位:driver.find_element_by_name(text)、driver.find_element_by_name("输入商家、分类或商圈")
classname定位:driver.find_element_by_class_name(class)、driver.find_element_by_class_name(“android.widget.TextView”)
xpath定位:driver.findElementsByXPath()、By.xpah(“//android.widget.TextView[contains(@Text,”abc”)]”)
注意虽然xpath是万能的但是尽量还是用ByName、ByID
实例讲解
在这里先说一下简单的实例吧,我们在这里用junit,在测试类中创建一个class文件
public classDemoTest {
privateAppiumDriverdriver;
@Before
public voidsetUp()throwsException{
DesiredCapabilities cap =newDesiredCapabilities();
cap.setCapability("platformName","Android");
cap.setCapability("deviceName","127.0.0.1:62001");//需要连接的真机或者模拟机
cap.setCapability("platformVersion","4.4.2");//版本
cap.setCapability("unicodeKeyboard",true);
cap.setCapability("resetKeyboard",true);
cap.setCapability("appPackage","安装包名字");//要测试的安装包
cap.setCapability("appActivity","安装包的activity");//要测试的安装包activity
driver=newAndroidDriver(newURL("http://127.0.0.1:4723/wd/hub"),cap);//appium本地地址和断开号
driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
}
@After
public voidtearDown()throwsException{
driver.quit();
}
}
如何获取测试app 的安装包名字package、launch able-activity属性的名字呢?
有两种方式:第一种先进入build-tools目录下,执行“aapt dump badging app存放的目录“;第二种就是启动appium的时候查看启动日志;
连接的机器的条件我们已经准备好了,现在我们主要写测试用例了,创建一个方法在前面添加@Test,把它放在Before、After中间,以为junit每次执行test的时候都会执行Before和After,这样我们可以写多个用例每次都需要重新加载一下
public void test4() throws Exception{
Thread.sleep(2000);//等待时间
driver.findElementByName("定位元素的test").click();
driver.findElementById("定位元素的id").click();
driver.findElementByClassName("定位元素classname").sendKeys("输入字符");
driver.findElementByXPath("定位元素xpath").click();
}
可以理解为把这个页面截取出来找到它的元素,然后把操作分开点击(click)、输入(sendkeys)等,元素后面有很多的操作,这里简单介绍一下。
这里注意的是,在执行时确保连接到真机或者模拟机、appium已经启动,有的时候执行的时候种报错那时因为定位的元素变了,获取不到,需要重新配置下;