【问题标题】:Using selenium and Appium is it possible to change between wifi networks?使用 selenium 和 Appium 是否可以在 wifi 网络之间进行更改?
【发布时间】:2015-11-07 17:53:45
【问题描述】:

使用: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

【问题讨论】:

标签: mobile rubygems webdriver wifi appium


【解决方案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!")

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 我必须多读一点,以确保我理解正确。在我的移动设备上,我有 3 个可以连接的无线网络。有时我想连接到网络 1,在测试过程中我可能想更改到网络 2 或 3,然后再回到网络 1。
    【解决方案3】:

    是的,可以使用 Appium 更改网络。看here

    【讨论】:

    • 我不太明白它是如何工作的,因为我在尝试执行代码时遇到错误。我的 selenium ruby​​gem 脚本是否可以即时更改设备的活动网络连接?
    • 我是新手,所以请原谅我的所有问题。我看到 getNetworkConnection 是在 java-client 绑定中设置的,但是 ruby​​gems 有吗?有没有办法在特定脚本中同时使用 java 和 ruby​​gems 语言?
    • 我认为应该在 Ruby 中工作,但是你的语法不正确,应该是 driver.get_network_connection()。见github.com/appium/ruby_lib/blob/master/lib/appium_lib/device/…
    【解决方案4】:

    我正在使用下面的 adb 命令来打开和关闭 WiFi/数据。它工作正常。

    开启wifi - adb shell am start -n io.appium.settings/.Settings -e wifi on

    关闭 WiFi - adb shell am start -n io.appium.settings/.Settings -e wifi off

    开启移动数据 - adb shell am start -n io.appium.settings/.Settings -e data on

    关闭移动数据 - adb shell am start -n io.appium.settings/.Settings -e data off

    【讨论】:

      【解决方案5】:

      您可以通过 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();
      

      【讨论】:

        【解决方案6】:

        这个ADB命令肯定会关闭你的wifi:

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

        打开它使用:

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

        试试这个代码 -

        self.driver.open_notifications()
        self.driver.find_element_by_xpath('//android.widget.Switch[@content-desc="Airplane mode"]').click()
        self.driver.back()
        

        如果对你有用,请给我点赞

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-08-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-12-09
          • 2018-08-25
          • 2011-11-30
          相关资源
          最近更新 更多