Appium自动化测试------app与webview切换访问

1、手机中存在H5页面,如下图

2、通过命令:print driver.contexts,查看到页面中存在一个list:

["NATIVE_APP","WEBVIEW_com.xxx.xxx.agent"]

NATIVE_APP:这个就是native,也就是原生的

WEBVIEW_com.xxxx :这个就是webview

问题:当使用命令,打印不出来webview时,需要开发加上一个代码:

【解决方案】

需要开启webview远程调试功能, Android 4.4以上,需要在应用代码中增加一下代码段开启该功能 (可由开发人员增加后重新打包给测试):

修改Activity extends CordovaActivity,设置setWebContentsDebuggingEnabled(true);

复制代码

public class MyActivity  extends CordovaActivity {
    CordovaWebView cwv;
    /**
     * Called when the activity is first created.
     */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        super.init();
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            this.appView.setWebContentsDebuggingEnabled(true);
        }
        // Set by <content src="index.html" /> in config.xml
        loadUrl(launchUrl);
    }
}

复制代码

 开启WebView远程调试功能后,重新打印contexts,成功!

>>> driver.contexts
['NATIVE_APP', 'WEBVIEW_com.sxxxxx.xxx']

3、切换到webview页面

driver.switch_to.context(contexts[1])

driver.switch_to.context("'WEBVIEW_com.sxxxxx.xxx'")

最好封装成一个方法:

    def get_webView(self):
        for cons in driver.contexts:
            cc=cons.encode('utf-8')
            if cc.lower().startswith("webview"):
                self.driver.switch_to.context(cc)
                break

遇到问题:

提示:selenium.common.exceptions.WebDriverException: Message: An unknown server-side error occurred while processing the command. 
Original error: No Chromedriver found that can automate Chrome '46.0.2490'

就是PC端的Chromedriver版本不正确,位置在:

看报错的log日志:

 打开网址后 ,能查找到对应的版本,下载后替换即可

 点击对应版本,打开页面:(我的电脑是win64位的,但是没有win64,下载了win32,成功了)

4、切换后,使用命令查看是否成功

print driver.current.context

### 设置Appium环境用于APP自动化测试 #### 配置要求 为了成功运行基于Appium的应用程序自动化测试,需满足一系列配置需求。设备方面,支持真实移动设备以及模拟器/仿真器;操作系统上,对于Android而言,推荐使用Windows或Mac OS作为开发平台,并确保已安装Java Development Kit (JDK),因为许多构建工具和服务都依赖于它。 #### 安装步骤及所需依赖项 1. **安装Node.js** Appium服务器由JavaScript编写并依靠Node.js来执行。因此,在任何平台上部署前都需要先下载并安装最新稳定版本的Node.js[^1]。 2. **安装Appium Server** 可通过命令行工具npm全局安装Appium server。打开终端窗口输入`npm install -g appium@latest`完成安装过程。这一步骤会自动处理所有必要的依赖关系,使用户能够专注于后续操作而非解决兼容性问题。 3. **启动Appium服务** 使用命令`appium`可以在本地机器上启动默认端口上的Appium服务实例。如果希望指定不同参数,则可以附加更多选项至上述指令之后。值得注意的是,在利用检查器工具之前务必确认该服务已经正常开启。 4. **准备安卓环境(仅限Android)** 对于打算针对Android应用开展工作的开发者来说,还需要额外几步准备工作: * 下载并设置好Android SDK; * 将ANDROID_HOME环境变量指向SDK路径下; * 添加adb、emulator等常用二进制文件所在的目录到系统的PATH中去; 5. **获取页面元素信息** 借助Appium Inspector这类可视化调试工具可以帮助识别应用程序UI组件的信息以便更方便地编写定位表达式。当尝试访问特定控件时,这些数据显得尤为重要。启动此功能的前提条件同样是保证后台存在可用的服务进程。 6. **定义启动活动(Activity)** 当涉及到跨多个应用程序的操作场景时,可能需要明确指出要激活的目标activity名称。例如,在某些情况下可以通过设定desired capabilities里的`appActivity`属性值为待测软件包内的某个具体入口点来进行切换[^2]。 7. **探索Web视图中的DOM结构** 如果目标应用程序包含了WebView组件的话,那么还可以进一步深入研究其内部HTML文档对象模型(DOM)层次。此时可借助浏览器开发者控制台提供的inspect特性实现这一目的[^3]。 8. **Xposed框架集成**(非必需) 虽然不是强制性的组成部分之一,但在某些特殊场合下可能会用到像Xposed这样的第三方插件扩展机制。它们允许修改现有系统行为而无需重新编译源码,从而简化了部分复杂交互逻辑的实现难度。 ```bash # Node.js安装示例(Linux/MacOS) sudo apt-get update && sudo apt-get install nodejs npm # Debian/Ubuntu brew install node # macOS with Homebrew # Appium Server安装 npm install -g appium@latest # 启动Appium Service appium & ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值