飞行模式 enable/disable 在 Appium 中以编程方式用于 Android

Flight mode enable/disable programmatically in Appium for Android

任何人都有如何在 Appium 中使用飞行模式进行操作的工作示例 Android?由于某些原因,Appim 文档针对此主题并不完整,none 的建议方法与 "this should work...." 一起工作。 我卡在飞行模式了。

我其实不熟悉 Appium,但你没有提到你是否在 appium.io 文档之外寻找解决方案。我猜 driver.toggleAirplaneMode() 对你没用?

那么,你试过把Python代码转换成this answer from 2016吗?

# To enable/disable flight mode
def enableFlightMode(self,context):
        driver.mobile.set_network_connection(driver.mobile.AIRPLANE_MODE)
        driver.implicitly_wait(10)
        if driver.network_connection == 1:
            self.report_pass("The network connection is disabled in the mobile and flight mode is active.")
        else:
            self.report_fail("The flight mode is not active yet!")

根据 appium 文档,您可以按如下所述切换飞行模式。

driver.toggleAirplaneMode();

Appium 文档有关于如何更改连接类型的漂亮 solid introduction

Java API 是 here and here

driver.getConnection() 将 return 您当前的状态,然后您可以将其更改为所需的状态。

注意:在真实设备上更改飞行模式状态仅适用于 Android 6 岁及以上

Appium文档在很多问题上不完整,我处理飞行模式和wifi的两种工作方法都在这里:

    @SuppressWarnings("rawtypes")
public void pressFlightMode(int waitingTime){
    if (isIOS()) {
        //should be implemented
    } else {
    try {
            ((AndroidDriver)driver).toggleAirplaneMode();
            sleep(waitingTime);
        } catch (Exception e ) {
            System.out.println("Error turning on flight mode.");
     }
    }
}

@SuppressWarnings("rawtypes")
public void pressWifi(int waitingTime){
    if (isIOS()) {
        //to be implemented     
        } else {
            try {
                ((AndroidDriver)driver).toggleWifi();            
                sleep(waitingTime);
            } catch (Exception e ) {
                System.out.println("Error turning off flight mode.");
            }
        }
}

在最新的Android版本中禁用了启用和禁用飞行模式的权限,但您可以使用以下命令实现 在 Appium Latest Java 客户端中,您可以使用

要在 Android 中禁用 Wifi 和数据:

driver.setConnection(new ConnectionStateBuilder().withWiFiDisabled().withDataDisabled().build());

要在 Android 中启用 WiFI 和数据: driver.setConnection(new ConnectionStateBuilder().withWiFiEnabled().withDataEnabled().build());