曾经由于一些特殊的原因搁置了,有很多想法,并未去实现,准备花点时间把基于Appium的UI自动化项目重写一下,一方面是以前写的过于耦合,也有一些特殊的问题没有解决,如:不同手机有不同的权限弹框、失败重试机制、校验脚本失败是由于应用质量还是脚本本身原因等。学的多不如学的精,意义不外如是也~
这是以前整理的Appium中常用的操作控件的方法,后续会继续补充…
1.通过文本定位
driver.findElementByAndroidUIAutomator("new UiSelector().text(\"反馈天气\")").click();
2.通过列表index定位
List<WebElement> listReport = driver.findElementsByClassName("android.widget.TextView");// 获取TextView的所有元素
WebElement targetReport = listReport.get(4);// 获取列表中第四个Textview,即“阴”
targetReport.click();
3.通过Xpath定位
driver.findElementByXPath(
"//android.widget.Button[@resource-id=\"com.moji.mjweather:id/btn_weather_feedback_publish\"]").click();
Thread.sleep(2000);
driver.findElementByXPath("//android.widget.TextView[@text=\"使用其他方式登录\"]").click();
4.输入文字
List<WebElement> textFieldsList = driver.findElementsByClassName("android.widget.EditText");
//textFieldsList.get(0).clear();
textFieldsList.get(0).sendKeys("15527913638");
textFieldsList.get(1).sendKeys("12345678");
// 另一种输入方法,与List效果一致
/*
* driver.findElement(By.id(
* "com.moji.mjweather:id/et_login_input_account")).sendKeys(
* "15527913638"); driver.findElement(By.id(
* "com.moji.mjweather:id/et_login_input_password")).sendKeys("123456");
*/
5.校验文案是否展示
// wait login success
Assert.assertTrue(driver.findElement(By.name("好友动态")).isDisplayed());
6.截屏
snapshot((TakesScreenshot) driver, "时景页面.png");