NO.6-网络设置

在测试过程中难免需要有一些跟网络状态相关的设置,比如要确保‘wifi‘是连接的,或者确保‘数据网络‘是连接的,或者是没网络的.有问题先翻查API,翻查之后发现appium也灰常给力的提供了相关的API,将尝试过程中的一些问题总结一下.

好嘞,客官,菜来喽!!!

1.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

这个API的大概意思是:设置网络连接类型,通过`appium.webdriver.ConnectionType`枚举类型设置.

0=无/1=飞行模式/2=wifi/4=数据/6=所有网络


先不管那个什么枚举类型了,直接上API+参数开跑代码,实践出真理!首先试一下‘6‘,看看这个‘所有网络‘都包括什么~

我手机现在的状态是这样的:

都是关闭的状态

执行代码:

driver.set_network_connection(6)

结果:

额~~所好的所有网络,只开启一个wifi````````````

接着就是‘4‘数据,应该就是指手机卡的网络开关,我们设置一下来验证.

执行代码:

driver.set_network_connection(4)

结果:

这是什么鬼````你好歹开启点啥啊```居然还是没反应?

再来试试‘2‘wifi连接

执行代码:

driver.set_network_connection(2)

结果:

这是正常的```

接下来是飞行模式

执行代码:

driver.set_network_connection(1)

结果:

这也是正常的```

最后是‘0‘代表无连接,那我就先把各种连接都打开好了:

执行代码:

driver.set_network_connection(0)

结果:

合着"数据"连接,就是体系外的了,执行"0无连接",关闭的也只是wifi`````````

轮流试过一遍了,我又想去纠结一下,这个`appium.webdriver.ConnectionType`,于是我就去这个地方看了看:

跟API写的差不都一个意思,我搜索了一下,于是乎发现了另一个使用方法如下:

from appium.webdriver.connectiontype import ConnectionType

driver.set_network_connection(ConnectionType.AIRPLANE_MODE)

又臭又长的写法,不知道能不能打开数据网络呢?去试试~

执行代码:

driver.set_network_connection(ConnectionType.DATA_ONLY)

结果:然而并没什么软用``````````````好吧,能开一个wifi我就满足了.

在实际测试的时候,没跑一条用例就执行一次打开wifi是挺烦的,于是乎我考虑自己组装一个方法,先查看一下网络状态,如果wifi没开,我在打开wifi连接.有这个想法后,我又去翻了api,还真有获取当前网络的方法.

2.network_connection

Returns an integer bitmask specifying the network connection type.
Android only.
Possible values are available through the enumeration `appium.webdriver.ConnectionType`

这个API的大概意思:返回网络连接类型的整数

我手机现在的状态是这样的:

执行代码:

print(driver.network_connection)

结果:0

鉴于刚才,打开"数据"网络无效,所以我想试试,如果我开启数据网络,获取到的信息是什么样:

执行代码:

print(driver.network_connection)

结果:4

"纳尼"(*?∀?)`````正确返回4了!!真是匪夷所思的体验``

刚刚我们执行"6所有网络"的时候,仅开启了wifi,这回试试仅开启wifi返回的是什么:

执行代码:

print(driver.network_connection)

结果:2

"纳尼"(*?∀?)`````正确返回2了!!!好吧,看来查询状态的API,比设置状态的API靠谱很多.

我以为这样我就可以拿去用了,然后还有坑,我的测试机,是没有手机卡的,于是乎我遇到了坑.

测试机的状态是这样的:

没有手机卡,"数据"不可点击状态,颜色稍微特别一点.

执行代码:

print(driver.network_connection)

结果:4

"纳尼"(*?∀?)`````怎么是4呢?我连手机卡都没有啊!!!!,假如把wifi也开启,岂不是返回6了??

我们来试试:

执行代码:

print(driver.network_connection)

结果:6

"纳尼"(*?∀?)`````还真是6啊!6啊!6啊!服了`````跪拜~

实际用这两个组合的时候还是要多试一下,我发现的坑没准仅针对我自己的这几台测试机而已.仅供参考~~

3.启动蓝牙

appium并没有启动蓝牙的API,搜索了一下相关问题发现了两个解决方案:

第一方案:适用于代码能力好的大牛,思路超简单,就是重构appium的API,增加启动蓝牙的功能......#大神们应该也不用看我废话

第二方案:用python的自带库(subprocess),执行adb am命令,启动蓝牙

在执行adb am命令的时候,会弹出一个询问打开蓝牙的对话框,是可以直接点击的,如图:

‘允许‘有唯一的ID,可以直接点击

好吧,不废话了,直接上代码.

手机目前的状态:

执行代码:

subprocess.call("adb shell am start -a android.bluetooth.adapter.action.REQUEST_ENABLE",shell=True)
driver.find_element_by_id("android:id/button1").click() #这是点击‘允许‘

结果:

蓝牙开启成功

对于那串adb命令不理解的,大家去搜‘adb am‘命令学习一下好了,理论上通过‘adb am‘命令还能开启更多appium没法完成的设置

菜齐了!

时间: 2024-10-12 14:41:10

NO.6-网络设置的相关文章

VMWare虚拟机下RedHat 9.0linux的网络设置

VMWare虚拟机下安装的RedHat 9.0 linux有三种方式实现上网,桥接.nat.host-only.本来想用桥接方式的,可总是因为配置网络出现问题而不能上网,还把 sygate4.5(代理服务器软件)给安装上去配置也没用.没办法 ,还是用nat方式去配置,虚拟机linux下NAT上网配置和我用的windows xp3不一样,linux要想用NAT方式上网还需进行另外的设置,试了N多遍,最后才发现,我把linux的DNS配置错了,真想哭啊,这点小错误浪费 了我这么多时间.不废话了,还是

day08 网络设置、软件包管理

网络设置 1 ifconfig //最小化安装时不可用,需要安装安装包,命令为查看网卡信息 2 yum install net-tools 3 4 mtu 网卡的最大发送字节 5 6 iptables -F 清掉防火墙配置 7 setenforce 0 表示临时关闭selinux防火墙 8 9 10 ifconfig eno16777736(网卡号) 192.168.103/24 11 12 ifconfig eno16777736:0(虚拟出一块网卡) 192.168.16.104//24 1

OpenSUSE 开启SSH 和网络设置(转)

一.开启SSH 1.确认SSH包已安装. 2.确认防火墙没有拦截. 3.确认SSH服务已启动.4.确认SSH配置文件设置正确. 环境: SSH已安装,防火墙设置不清楚,SSH服务已启动,配置文件不清楚. 查看防火墙: 编辑文件/etc/sysconfig/SuSEfirewall2 FW_SERVICES_EXT_TCP="" 查找此处,确认防火墙阻止,修改为: FW_SERVICES_EXT_TCP="ssh" 保存退出,重新启动防火墙: rcSuSEfirewa

ovf虚机模板导入后,操作系统原网络设置失效,脚本设定新的网络!

从虚拟机ovf模板导入的虚拟机网络设置会发生改变,网卡会发生改变,所以导致虚拟机启动后网络不能用. 所以要做下面几件事情,网络才会可用: 1 首先查看/etc/udev/rules.d/70-persistent-net.rules文件,在文件最后出现的eth网卡为系统建立的新网卡,以及mac地址.将原来网卡那行注释掉. 2 查看/etc/sysconfig/network-scripts/ifcfg-eth0(1)这个文件,这个文件为原始虚拟机的网络设置 3 将原有ifcfg-eh文件进行改名

CentOS6.6图文详细安装教程(有些设置大部分教程没出现过,附带网络设置等)

Centos6.6 下载地址:thunder://QUFodHRwOi8vbGludXguemh1YW5neGl0b25nLmNvbTo4MDgvMjAxNTAxL0NlbnRPUy02LjYteDg2XzY0LWJpbi1EVkQxLmlzb1pa 1.首先要下载一个centos的iso镜像,我是用虚拟机VMware来安装的,用VMware最好创建一个空白硬盘. 2.创建完毕再设置里面挂载iso的centos系统文件. 3.进入到这个页面: 说明: 1.install or upgrade a

Ubuntu 12.04网络设置

本文描述在Ubuntu12.04环境下配置桥接网络的方法,其实这个算是比较简单的,权当做是给自己做个总结吧. 首先,打开Ubuntu 12.04的网络设置文件:/etc/network/interfaces,会看到 1 auto lo 2 3 iface lo inet loopback 这边的设置是本地回路. 在后面加上: 1 auto eth0 2 3 iface eth0 inet static 4 5 address 192.168.1.230(ip地址) 6 7 netmask 255

【转】虚拟机 NAT网络设置

我以下写的配置方法别人在网上已经发布过类似的文章.但是我觉的别人写的东西不一定是对的,必须自己亲自试验一下才行.就像有句话说的:“实践是检验真理的唯一标准”以下是我操作的步骤.希望不足的地方,读者能够指出.   1.必须检查你的windows系统的VMware DHCP Service 和VMware NAT Service这个两个服务是否启动.如果未启动请启动.   2. 把windows的虚拟网卡VMware Network Adapter VMnet8设置为IP和DNS服务器都自动获取. 

Ubuntu 网络设置

内容: A). Ubuntu 14.04中设置IP地址的三种方式; B). 使用NetworkManager管理无线网络; C). 解决resolv.conf被重写问题. A). 在Ubuntu 14.04中设置IP地址的方式有三种: 一.通过命令直接进行配置 步骤1.配置IP地址,例如设置网卡eth0的IP为172.31.174.142 ,子网掩码为255.255.255.0 #ifconfig eth0 172.31.174.124 netmask 255.255.255.0 步骤2.添加默

Ubuntu中启用关闭Network-manager网络设置问题!

Ubuntu中启用关闭Network-manager网络设置问题! [Server版本] 在UbuntuServer版本中,因为只存有命令行模式,所以要想进行网络参数设置,只能通过修改/etc/network/interfaces.具体设置方法如下: (1) UbuntuServer 修改 IP地址 打开/etc/network/interfaces sudo vim/etc/network/interfaces 加入以下语句: auto eth0 iface eth0inet static a

VS2008 Pocket PC 2003 SE VGA仿真程序网络设置

最近对这个问题摸索的很久,都没有解决,今天终于搞定,现将大体设置步骤记录下来,以备回顾和方便别人查看,步骤如下: 1.打开VS2008,打开Windows Mobile设备中心(网上有下载). 2.连接仿真器. 3.打开仿真器管理页面. 4.仿真器网络设置. 5.插入底座. 6.建立关联. 7.OK. 如果不成功的话,建议重启再试一次. 最后详细图解设置如下:http://wenku.baidu.com/link?url=1HWac2i9pt_WD19exmEwSkgcM_a6Z4kTKIq2p