前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android自动化中动态设置网络代理

Android自动化中动态设置网络代理

作者头像
岛哥的质量效能笔记
发布2021-08-18 15:08:25
6990
发布2021-08-18 15:08:25
举报
文章被收录于专栏:岛哥的质量效能笔记

阅读本文大约需要1.1分钟。

背景

由于现在很多应用的页面数据都是AI算法推荐生成的,所以每次打开同一个页面数据都会不一样,因此在做客户端UI自动化的过程中都会采用Mock方案,利用MockServer来提供稳定的测试数据,其中MockServer的代理需要手动配置。

拿Android手机举例,过程大致是:进入设置->进入 WLAN ->找对应 wifi 连接->进入详情->找到代理->选择手动->输入主机名->输入端口号->最后保存,可以看到每次都是重复操作,特别当你的自动化设备很多以及MockServer服务不稳定导致IP经常变的情况下累加的时间成本是很高的,而且一不小心,还有可能写错

方案

今天给大家分享一下如何通过命令行动态设置Android手机的代理,其实如果只有一台手机,直接执行下面的命令行即可:

代码语言:javascript
复制
设置代理
adb shell settings put global http_proxy ip:port
清除代理
adb shell settings put global http_proxy :0

但是当宿主机挂载了多台设备的时候,就需要指定设备了,正常来说直接-s指定设备SN号即可,但是这里会有些问题,代理并不会生效,需要将原生的adb命令用pure-python-adb 这个Python库代替,这个是通过纯Python实现的ADB客户端,原理如下:

再通过Flask-Script把设置代理和清除代理封装成命令行工具,实现代码如下:

代码语言:javascript
复制
from flask_script import Manager
from ppadb.client import Client as AdbClient

@manager.option('-sn', '--sn', dest='sn', default='', help='设备sn号')
@manager.option('-proxy', '--proxy', dest='proxy', default='', help='代理地址加端口')
def set_proxy(sn, proxy):
    try:
        client = AdbClient(host="127.0.0.1", port=5037)
        device = client.device(sn)
        device.shell("settings put global http_proxy {0}".format(proxy))
        LOGGER.debug("settings put global http_proxy {0}".format(proxy))
    except Exception as e:
        LOGGER.error(e)


@manager.option('-sn', '--sn', dest='sn', default='', help='设备sn号')
def clean_proxy(sn):
    try:
        client = AdbClient(host="127.0.0.1", port=5037)
        device = client.device(sn)
        device.shell("settings put global http_proxy :0")
        LOGGER.debug("settings put global http_proxy :0")
    except Exception as e:
        LOGGER.error(e)

需要注意的是通过这种方式自动设置代理后WiFi高级选项中是看不到代理信息的而且无法取消,必须通过命令取消。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-10-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 岛哥的质量效能笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
专用宿主机
专用宿主机(CVM Dedicated Host,CDH)提供用户独享的物理服务器资源,满足您资源独享、资源物理隔离、安全、合规需求。专用宿主机搭载了腾讯云虚拟化系统,购买之后,您可在其上灵活创建、管理多个自定义规格的云服务器实例,自主规划物理资源的使用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档