Appium在Android无法显示界面处理方式

事情的起因是在学习Appium自动化测试过程中,使用Appium无法对B站的登录界面进行操作
也无法调用其信息。网上给出的解释是B站处于安全防护考虑,做了限制。限制有点厉害,使用特殊方法才截的屏。
以下是截图应用的控件坐标。

1、设备为小米10s,分辨率为1080x2340 屏幕密度440

查看屏幕信息adb命令:
adb shell wm size  # 屏幕分辨率
adb shell wm size 540×960  # 设置屏幕分辨率
adb shell wm density  # 屏幕密度
adb shell wm density 100 # 设置屏幕密度
adb shell wm size reset  # 重置屏幕尺寸大小
adb shell wm density reset  # 重置屏幕密度
adb shell dumpsys window displays  # 屏幕通用信息

在这里插入图片描述

2、使用Appium 对界面对登录界面进行捕获

结果就是捕获不到这个界面

3、使用ADB命令通过坐标进行点击、输入等操作

adb shell input tap 290 710  # 点击屏幕290 710坐标
adb shell input text 11111111111 # 输入文本,以手机号为例

4、以Python 代码实现登录操作

from appium import webdriver
import os, time
os.system('chcp 65001')  # 将cmd的显示字符编码从默认的GBK改为UTF-8
deviceName = os.popen("adb devices").read()  # 设备名称
platformVersion = os.popen("adb shell getprop ro.build.version.release").read()  # 安卓版本
appPackage = os.popen("adb shell dumpsys window w |findstr \/ |findstr name=").read()  # 软件名称
desired_caps = \
    {
  "deviceName": deviceName[:-8],
  "platformName": "Android",
  "platformVersion": platformVersion,
  "appPackage": "tv.danmaku.bili",
  "appActivity": "tv.danmaku.bili.MainActivityV2",
  "newCommandTimeout": 0,  # 设置超时时间, 默认为60s,设置为0关闭。超时时间到后,软件将退出
  "ANDROID_UIAUTOMATOR": "uiautomator2"
    }
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
driver.hide_keyboard()  # 键盘隐藏
driver.implicitly_wait(5) # 延时(全局生效)
driver.find_elements(by=By.CLASS_NAME, value='android.widget.TextView')[4].click()  # 同意用户协议与隐私政策提示弹窗
driver.find_elements(by=By.CLASS_NAME, value='android.widget.ImageView')[0].click()  # 左上角登录按钮
# 可以考虑下面命令写个列表然后循环或者封装成方法调用,这里方便理解直接写了。
time.sleep(5)  # 界面反应时间
b = os.popen('adb shell input tap 300 710').read()
time.sleep(2)
b = os.popen('adb shell input text 1314520****').read()  #输入手机号码
time.sleep(2)
b = os.popen('adb shell input tap 950 670').read()  # 点击获取验证码位置
b = os.popen('adb shell input tap 280 800').read()
time.sleep(1)
verification_code = input("请输入验证码")
verification_code = 'adb shell input text %s' % verification_code
b = os.popen(verification_code).read()  # 输入验证码
b = os.popen('adb shell input tap 280 800').read()
time.sleep(2)
b = os.popen('adb shell input tap 40 1150').read()  # 勾选同意用户协议
time.sleep(1)
b = os.popen('adb shell input tap 500 1000').read()  # 点击验证登录
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值