九夏_光年 2023-11-22 11:52 采纳率: 0%
浏览 21

Appium弹框定位及操作问题

最近在学习Appium有关的自动化知识,并自己拿了一款APP(和家亲)去上手练习。然后在用和家亲去设置路由器下挂设备的智能限速时,使用Appium Inspector并不能看到对应的"限速设置"弹框的元素,无法对"下载限速"和"上传限速"的开关和数据进行操作。我应该怎么样才能识别并正常用Appium去操作弹框上的元素。
【和家亲限速设置弹框页面】

img


【使用Appium Inspector查看不到弹框元素】

img


后面发现是APP内存在android.webkit.WebView,在网上查资料需要切换到webview的context环境中,但是我用Appium进入到这个页面后,输出当前的上下文(current_context)以及所有的上下文环境(contexts),前者显示的是"NATIVE_APP",后者显示为"['NATIVE_APP']",并不能正确切换webview。
后面问了一个测试teacher,他推荐的是采用airtest+poco的方式去进行元素定位和操作,但是在我已经大量操作使用了Appium的情况下,切换到airtest会导致工作量很大,花费时间更多,不太想使用这个框架,虽然用airtest工具确实能看到弹框的元素信息(包含了"am-modal-container" 和 "android.app.Dialog"元素)【这个方法也只能留到最后不得已才使用,跟坐标定位一样,实在不得已才使用】
【使用Airtest+Poco能看到限速设置弹框元素】

img


后面为了能让Appium Inspector能正确识别到限速设置弹框元素,上网搜了一些资料,资料里面提及使用Xposed去开启设备的webview debugger远程调试模式,安装完Xposed后,会提示Xposed框架未安装,不能正常开启设备的webviewdebugger功能。
【Xposed框架未安装】

img


到目前已经花费极多时间去解决这个弹框定位问题,感觉在问题解决上很难再进一步,没啥思路,所以在这想请问各位大伙有没有思路或者有解决过这种问题的指点一下哈

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-11-22 14:12
    关注

    【以下回答由 GPT 生成】

    问题分析: 根据问题描述,您的需求是在和家亲APP中定位并操作弹框元素,特别是限速设置弹框。但是通过使用Appium Inspector,您无法看到对应的弹框元素,也无法进行操作。原因是因为APP内存在android.webkit.WebView,并且在尝试切换到webview的context环境中时无法成功切换。您咨询测试老师后得知可以使用airtest+poco的方式去进行元素定位和操作,但您不太愿意切换到该框架。同时,在尝试使用Xposed开启设备的webview debugger远程调试模式时也遇到了问题。因此,您希望听听大家有没有思路或者解决过类似问题的经验。

    解决方案: 基于问题的描述,我将为您提供两种可能的解决方案:

    1. 尝试使用airtest+poco框架进行元素定位和操作
    2. 尝试使用Chrome远程调试Webview进行调试

    下面将详细介绍每种解决方案的具体步骤。


    解决方案一:使用airtest+poco框架进行元素定位和操作

    1. 安装airtest和poco库:

    python pip install airtest pip install pocoui

    1. 在测试代码的开头导入必要的库:

    python from airtest.core.api import * from poco.drivers.android.uiautomation import AndroidUiautomationPoco

    1. 连接到手机:

    python connect_device("Android://<设备序列号>")

    1. 初始化poco:

    python poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)

    1. 使用poco进行元素定位和操作:

    ```python # 定位元素 element = poco("<元素的搜索条件>")

    # 进行操作,比如点击 element.click() ```

    您可以使用poco提供的其他方法进行更复杂的操作,详情请参考poco文档。


    解决方案二:使用Chrome远程调试Webview进行调试

    1. 确保您的手机已连接到开发者模式,并且USB调试已启用。

    2. 安装最新版的Chrome浏览器和ADB工具。

    3. 运行以下命令,启动ADB并连接到设备:

    adb devices

    1. 打开Chrome浏览器,输入以下地址,进入Chrome DevTools:

    chrome://inspect/#devices

    1. 在Chrome DevTools中,选择您的设备,并找到您想要进行远程调试的WebView应用程序。

    2. 点击“inspect”,这将打开一个新的Chrome DevTools窗口,显示您的WebView应用程序的页面内容和元素。

    注:如果无法看到WebView应用程序,请先确认设备上已正确安装webview版本,并确保应用程序开启了WebView调试标志。

    1. 在打开的Chrome DevTools窗口中,您可以使用Chrome自带的Elements面板进行元素定位和操作。

    总结: 以上是两种可能的解决方案,您可以根据个人需求选择一个合适的方案。第一种方案是使用airtest+poco框架进行元素定位和操作,可以不切换到webview环境下去解决问题。而第二种方案是使用Chrome远程调试Webview进行调试,可以直接在Chrome中进行元素定位和操作。希望能够帮助到您,祝您顺利解决问题!


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 11月22日

悬赏问题

  • ¥15 stc15f2k60s2单片机关于流水灯,时钟,定时器,矩阵键盘等方面的综合问题
  • ¥15 YOLOv8已有一个初步的检测模型,想利用这个模型对新的图片进行自动标注,生成labellmg可以识别的数据,再手动修改。如何操作?
  • ¥30 NIRfast软件使用指导
  • ¥20 matlab仿真问题,求功率谱密度
  • ¥15 求micropython modbus-RTU 从机的代码或库?
  • ¥15 django5安装失败
  • ¥15 Java与Hbase相关问题
  • ¥15 后缀 crn 游戏文件提取资源
  • ¥20 bash代码推送不上去 git fetch origin master #失败了
  • ¥15 LOL外服加入了反作弊系统,现在游戏录像rofl文件离线都无法打开