實際上,你可以使用UIAutomator設置無線網絡設置和關閉。我今天晚上寫了代碼:)
這是代碼。你可以把它添加到Android例子是在這裏http://developer.android.com/tools/testing/testing_ui.html
在類
private enum OnOff {
Off,
On
};
添加新代碼的頂部添加以下枚舉後:
// Validate that the package name is the expected one
UiObject settingsValidation = new UiObject(new UiSelector()
.packageName("com.android.settings"));
assertTrue("Unable to detect Settings", settingsValidation.exists());
這是新的代碼:
UiSelector settingsItems = new UiSelector().className(android.widget.TextView.class.getName());
UiObject wiFi = appViews.getChildByText(settingsItems, "Wi-Fi");
// We can click on Wi-Fi, e.g. wiFi.clickAndWaitForNewWindow();
// So we know we have found the Wi-Fi setting
UiSelector switchElement = new UiSelector().className(android.widget.Switch.class.getName());
setSwitchTo(OnOff.Off); // Or set it to On as you wish :)
}
private void setSwitchTo(OnOff value) throws UiObjectNotFoundException {
String text;
UiObject switchObject = getSwitchObject();
for (int attempts = 0; attempts < 5; attempts++) {
text = switchObject.getText();
boolean switchIsOn = switchObject.isChecked();
final OnOff result;
if (switchIsOn) {
result = OnOff.On;
} else {
result = OnOff.Off;
}
System.out.println("Value of switch is " + switchObject.isSelected() + ", " + text + ", " + switchIsOn);
if (result == value) {
System.out.println("Switch set to correct value " + result);
break;
} else {
switchObject.click();
}
}
}
private UiObject getSwitchObject() {
UiObject switchObject = new UiObject(new UiSelector().className(android.widget.Switch.class.getName()));
assertTrue("Unable to find the switch object", switchObject.exists());
String text;
return switchObject;
}
該循環是爲了補償我觀察到的一些行爲,其中點擊似乎沒有改變開關位置。
另外我想知道,如果我們可以在uiautomator中運行測試用例時檢查wifi連接是否處於活動狀態,即使我手動開啓wifi也可以檢查數據包是否交換。那可能嗎? – user1907534
既然我們可以在這個中使用android的所有assert函數,爲什麼不用這個函數呢? – user1907534