使用selenium和Appium可以在wifi网络之间切换吗?

时间:2015-08-14 12:55:59

标签: mobile rubygems webdriver wifi appium

使用:selenium webdriver,rubygems,appium,android和ios设备

我正在测试的应用程序有一个按钮,该按钮仅在连接到特定无线网络时才会启用。我想创建一个脚本来检查按钮是否处于活动状态

  vKioskStatus = element.enabled?
  puts(vKioskStatus)

如果它不活跃,那么我想改变wifi网络。是否可以在移动设备上自动更改网络?

更新

尝试使用getNetworkConnection时收到以下错误。是否需要添加?

<main>': undefined method `getNetworkConnection' for #<Selenium::WebDriver::Driver:0x..fe1a5511e browser=:firefox> (NoMethodError)

这是我的代码:

require 'rubygems'
require 'selenium-webdriver'
require 'uri'
require 'appium_lib'

require_relative 'AndroidLib'
cButton = Buttons.new

driver = Selenium::WebDriver.for(:remote, :url => "http://127.0.0.1:4723/wd/hub") # Works for Android
sleep(5)

bob = driver.getNetworkConnection()
puts bob

4 个答案:

答案 0 :(得分:1)

您可以使用以下appium命令切换Android中的wifi连接(iOS中不可用),

启用航班模式:

# Python

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!")

并禁用飞行模式:

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!")

答案 1 :(得分:0)

您可以通过使用Shell脚本访问所有可用的WiFi网络来实现此目的。这意味着您需要编写通过代码触发ADB / Shell命令的逻辑。Connecting to wifi using adb shell

点击按钮,您可以触发命令连接到所需的wifi网络。

答案 2 :(得分:0)

您可以通过AndroidDriver获取/更改网络连接设置。但是,它仅适用于少于5的Android版本。

AppiumDriver<WebElement> driver = new AndroidDriver<WebElement>(new URL("..."), caps);
NetworkConnectionSetting networkConnection = new NetworkConnectionSetting(false, true, false);  // airplane mode, wiif, data

networkConnection.setData(true);  // enable mobile data
networkConnection.setWifi(false); // close wifi

((AndroidDriver<WebElement>)driver).setNetworkConnection(networkConnection);
networkConnection = ((AndroidDriver<WebElement>)driver).getNetworkConnection();

答案 3 :(得分:0)

ADB 命令肯定会关闭您的wifi:

[0-9]$

要启用它,请使用:

adb shell am broadcast -a io.appium.settings.wifi --es setstatus disable

OR

尝试此代码-

adb shell am broadcast -a io.appium.settings.wifi --es setstatus enable

如果它适合您,请给我一个重击