Appium python client 网络连接相关 api 用法

1.相关链接:http://blog.csdn.net/QingLang0213/article/details/48972403

原文 :https://testerhome.com/topics/3428

前言

今天有人问到我这个问题,并且尝试过传入数字/字符串作为参数均不成功。于是看了下,发现要找到正确用法需要对 client 源码有一定了解,并且 google 和 github 上都没有找到对应的使用示例,所以在这里记录一下。

问题描述

appium 一直有一个设置和获取当前各项连接状态的 api ,官方文档中可用参数及使用方法如下:

Value (Alias) Data Wifi Airplane Mode
0 (None) 0 0 0
1 (Airplane Mode) 0 0 1
2 (Wifi only) 0 1 0
4 (Data only) 1 0 0
6 (All network on) 1 1 0
// javascript
// set airplane mode
driver.setNetworkConnection(1)

// set wifi only
driver.setNetworkConnection(2)

// set data only
driver.setNetworkConnection(4)

// set wifi and data
driver.setNetworkConnection(6)

但在 Python client 中使用这样的代码会报错:

self.driver.set_network_connection(1)

报错信息:

Error
Traceback (most recent call last):
  File "/Users/NextGen/Documents/Framework/test.py", line 35, in test_search
    self.driver.set_network_connection(1)
  File "/Library/Python/2.7/site-packages/appium/webdriver/webdriver.py", line 623, in set_network_connection
    'type': connectionType.value
AttributeError: 'int' object has no attribute 'value'

解决过程

参考资料:8.13. enum — Support for enumerations

首先,出现 AttributeError 这个很奇怪,这里传入的东西为啥会有 value 这个属性?难道传的不是基本数据类型,而是一个对象?于是看了下这个方法的源码:

    def set_network_connection(self, connectionType):
        """Sets the network connection type. Android only.
        Possible values:
            Value (Alias)      | Data | Wifi | Airplane Mode
            -------------------------------------------------
            0 (None)           | 0    | 0    | 0
            1 (Airplane Mode)  | 0    | 0    | 1
            2 (Wifi only)      | 0    | 1    | 0
            4 (Data only)      | 1    | 0    | 0
            6 (All network on) | 1    | 1    | 0
        These are available through the enumeration `appium.webdriver.ConnectionType`

        :Args:
         - connectionType - a member of the enum appium.webdriver.ConnectionType
        """
        data = {
            'parameters': {
                'type': connectionType.value
            }
        }
        return self.execute(Command.SET_NETWORK_CONNECTION, data)['value']

关键字:

 - connectionType - a member of the enum appium.webdriver.ConnectionType

翻译一下这个注释:

- connectionType - 枚举类型 appium.webdriver.ConnectionType 中的成员

然后看看 appium.webdriver.ConnectionType

...
class ConnectionType(Enum):
    NO_CONNECTION = 0
    AIRPLANE_MODE = 1
    WIFI_ONLY = 2
    DATA_ONLY = 4
    ALL_NETWORK_ON = 6

ok,明白了。就是 connectionType 必须是 appium.webdriver.ConnectionType 里的其中一个成员。接下来就简单了。

问题解决

正确的使用方法:

# python
# set network  
from appium.webdriver.connectiontype import ConnectionType
self.driver.set_network_connection(ConnectionType.AIRPLANE_MODE)

# get network
self.driver.network_connection # it would return int type, like 0, 1, 2, 4, 6
ConnectionType(self.driver.network_connection).name # it would return mode name, like AIRPLANE_MODE, WIFI_ONLY

总结

这个其实本来没什么问题的,只是官方文档缺失导致用的时候要稍微探究一下才会用。同时也简单学习了一下怎么在 python 中使用枚举。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Appium是一个用于自动化移动应用程序的工具,它支持多种编程语言,包括Python。在使用Appium Python脚本连接手机之前,我们首先需要安装Appium服务器和Appium Python客户端库。 首先,我们需要确保已安装Appium服务器,并启动该服务器。然后,在Python环境中安装Appium Python客户端库。可以使用pip工具来安装Appium Python客户端库: ```python pip install Appium-Python-Client ``` 接下来,我们创建一个Python脚本来连接手机,并执行一些操作。在脚本中,我们需要指定设备的一些参数,如设备名称、平台版本、应用包名等。然后,我们可以使用Appium提供的API来进行手机操作,如启动应用、查找元素、模拟手势等。 一个简单的Appium Python脚本连接手机的例子如下: ```python from appium import webdriver desired_caps = { 'platformName': 'Android', 'platformVersion': '9.0', 'deviceName': 'emulator-5554', 'appPackage': 'com.example.myapp', 'appActivity': '.MainActivity' } driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) # 执行一些操作 element = driver.find_element_by_id('com.example.myapp:id/button') element.click() # 关闭应用 driver.quit() ``` 以上代码示例中,我们使用了Appium提供的webdriver.Remote方法连接手机,并指定了设备参数。然后,我们找到了应用中的一个按钮元素,并点击了它。最后,我们使用quit方法关闭了应用。 通过编写Appium Python脚本,我们可以方便地连接手机,并实现自动化测试、应用操作等功能。同时,Appium提供了丰富的API和文档,可以帮助我们更好地进行移动应用自动化开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值