两个关于wifi的测试用例02 Uiautomator2+Android Studio
1 from quick setting, open wifi
2 connect wifi
3 go back to home screen
4 launch browser and open www.baidu.com. Refresh the webpage every 5 seconds. repeat 4 times totally 20 seconds.
5 exit browser
6 disconnect wifi from quick setting
1从快速设置开始,打开wifi
2连接wifi
3返回主屏幕
4启动浏览器并打开www.baidu.com。每5秒钟刷新一次网页。总共重复4次20秒。
5退出浏览器
6断开wifi与快速设置的连接
//main
public void test_wifi2() throws IOException, UiObjectNotFoundException {
for (int i = 0; i < 1; i++) {
//快速设置开启WiFi
device.openQuickSettings();
solo.sleep(2000);
/*if(device.hasObject(By.descContains("Wi-Fi,").textContains("On"))){
device.pressBack();
}else {*/
device.findObject(By.descContains("Wi-Fi,").textContains("Off")).click();
// }
//回到桌面
device.pressHome();
//打开浏览器
solo.sleep(1000);
// soloUtils.launchByIntent(StringUtils.GOOGLE_CHROM_PACKGE, Intent.FLAG_ACTIVITY_NEW_TASK);
Intent intent = targetContext.getPackageManager().getLaunchIntentForPackage(StringUtils.GOOGLE_CHROM_PACKGE);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
targetContext.startActivity(intent);
device.waitForWindowUpdate(StringUtils.GOOGLE_CHROM_PACKGE, 10000);
//进入浏览器的前置条件
// reliaCom.BrowserPreposition();
reliaCom.registerChromeWatchers();
BySelector bySelector = By.res(Pattern.compile(StringUtils.COM_AND_CHR_ID_URL_BAR));
solo.sleep(5000);
UiObject2 obj = device.findObject(bySelector);
solo.sleep(5000);
reliaCom.removeChromeWathcers();
solo.sleep(2000);
obj.click();
solo.sleep(2000);
obj = device.findObject(bySelector);
obj.click();
solo.sleep(5000);
obj.setText(StringUtils.WWW_BAIDU);
solo.sleep(2000);
device.findObject(By.textContains(StringUtils.WWW_BAIDU).clazz(StringUtils.AND_WIDGET)).click();
solo.sleep(5000);
if (device.wait(Until.hasObject(By.text(StringUtils.ALLOW)), 6000)) {
device.findObject(By.text(StringUtils.ALLOW)).click();
}
if (device.wait(Until.hasObject(By.text(StringUtils.ALLOW2)), 6000)) {
device.findObject(By.text(StringUtils.ALLOW2)).click();
}
boolean b1 = solo.waitForUiObjectsToExist(15000, new UiObject(new UiSelector().textContains(StringUtils.BAIDUYIXIA).className(StringUtils.ANDROID_VIEW_VIEW)));
boolean b2 = solo.waitForUiObjectsToExist(15000, new UiObject(new UiSelector().textContains(StringUtils.MBAIDU_COM).className(StringUtils.TEXTVIEW_CLASSNAME)));
boolean b3 = solo.waitForUiObjectsToExist(15000, new UiObject(new UiSelector().textContains(StringUtils.BAIDUYIXIA).className(StringUtils.ANDROID_WIDGET_IMAGE)));
Assert.assertTrue("浏览器联网超时!", b1 | b2 | b3);
solo.sleep(5000);
for (int j = 0; j < 4; j++) {
solo.sleep(10000);
device.findObject(By.res("com.android.chrome:id/menu_button").descContains("More options")).click();
solo.sleep(13000);
device.findObject(By.res("com.android.chrome:id/button_five").descContains("Refresh")).click();
solo.sleep(10000);
}
device.pressHome();
//快速设置关闭WiFi
device.openQuickSettings();
solo.sleep(1000);
if (device.hasObject(By.descContains("Wi-Fi,").textContains("On"))) {
device.findObject(By.descContains("Wi-Fi,").textContains("On")).click();
}
}
}
public void registerChromeWatchers(){
device.registerWatcher("CHROME", new UiWatcher() {
@Override
public boolean checkForCondition() {
ArrayList<BySelector> list = new ArrayList<>();
list.add(By.text(StringUtils.ACCEPT_CONTINUE));
list.add(By.textContains("CONFIRM"));
list.add(By.textContains("NO THANKS"));
list.add(By.textContains("Accept & continue"));
list.add(By.text(Pattern.compile("NEXT|Next")));
list.add(By.text(Pattern.compile("No thanks|No Thanks")));
list.add(By.text("OK"));
list.add(By.res(StringUtils.COM_AND_CHR));
list.add(By.res(StringUtils.COM_AND_CHR_ID_NEXT_BUTTON));
list.add(By.text(Pattern.compile("NO THANKS|No Thanks|No thanks")));
list.add(By.text(StringUtils.ALLOW));
for (BySelector bySelector : list){
if(device.hasObject(bySelector)){
device.findObject(bySelector).click();
}
}
return false;
}
});
}
有意思的是第一个obj会因为等待时间过短会找不到浏览器的窗口控件,被迫加了5+5+2分钟才能找到窗口控件。