在执行测试套件时,我必须在Android设备中可用的不同wifi网络之间进行切换。 在执行的中间,我必须将wifi连接从Wifi_Network_1更改为Wifi_Network_2,前提是知道wifi网络的ssid名称和密码。怎么做到呢? 我正在使用:
setTimeout(function(){ alert("Hello"); }, 3000);
由于NetworkConnectionSetting已过时,因此无法找到替代方法。 我可以使用
打开/关闭wifiAppium server -->1.8.1
java-client --> 6.1.0
selenium-java --> 3.13.0
但是它不适合我的情况,因为我需要使用SSID名称及其密码在不同的wifi网络之间切换。 预先感谢。
答案 0 :(得分:0)
嗨,我正在使用此方法,因为Appium不赞成使用其wifi开关,而且我已经通过控制台通过adb的命令创建了自己的替代项。它对我有用,请尝试一下:
public synchronized boolean wifiSetup(String udid, boolean flg) {
synchronized (this) {
String flgEnabled = (flg) ? "enable" : "disable";
List<String> output = Console.runProcess(false, "adb -s " + udid + " shell am broadcast -a io.appium.settings.wifi --es setstatus " + flgEnabled);
for (String line : output) {
System.err.println(line);
if (line.equalsIgnoreCase("Broadcast completed: result=-1"))
return true;
}
return false;
}
}
用于关闭:
wifiSetup("xxxUDIDfromAndroid", false);
用于打开:
wifiSetup("xxxUDIDfromAndroid", true);
这是调用控制台的一部分:
public class Console {
private static final String[] WIN_RUNTIME = { "cmd.exe", "/C" };
private static final String[] OS_LINUX_RUNTIME = { "/bin/bash", "-l", "-c" };
private Console() {
}
private static <T> T[] concat(T[] first, T[] second) {
T[] result = Arrays.copyOf(first, first.length + second.length);
System.arraycopy(second, 0, result, first.length, second.length);
return result;
}
@SuppressWarnings({ "hiding"})
private static <String> String[] concatStr(String[] first, String[] second) {
String[] result = Arrays.copyOf(first, first.length + second.length);
System.arraycopy(second, 0, result, first.length, second.length);
return result;
}
public static List<String> runProcess(boolean isWin, String... command) {
String[] allCommand = null;
try {
if (isWin) {
allCommand = concat(WIN_RUNTIME, command);
} else {
allCommand = concat(OS_LINUX_RUNTIME, command);
}
ProcessBuilder pb = new ProcessBuilder(allCommand);
pb.redirectErrorStream(true);
Process p = pb.start();
p.waitFor();
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
String _temp = null;
List<String> line = new ArrayList<String>();
while ((_temp = in.readLine()) != null) {
// system.out.println("temp line: " + _temp);
line.add(_temp);
}
// system.out.println("result after command: " + line);
return line;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
希望这会有所帮助,