本文介绍了Appium v​​1.17.1 无法在iOS中切换WebView上下文的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

以前的版本 (1.15.1) 我能够执行此代码.

Previous version (1.15.1) I was able to perform this code.

Set<String> contextNames = driver.getContextHandles();
    for (String contextName : contextNames) {
        System.out.println(contextName); //prints out something like NATIVE_APP \n WEBVIEW_1
    }
driver.context((String) contextNames.toArray()[1]); // set context to WEBVIEW_1

但是更新到最新版本(1.17.1)后,就遇到了这个错误.

However after updated to the latest version (1.17.1), it encountered this error.

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at com.sapphire.appclient.automation.page.AbstractPage.getContext(AbstractPage.java:53)
...
...

推荐答案

您使用的语法有误.

这是针对 Python 的:

This is for Python:

如果你知道上下文:

driver.switch_to.context['NATIVE_APP]   #appium chrome driver
driver.switch_to.context['WEB_VIEW_chrome]    # selenium chrome driver

返回列表中的所有可用上下文:

Return all available context in list:

driver.contexts

所以你可以这样使用:

driver.switch_to.context([0])

注意:web_view 始终是列表中的最后一个键,因此您可以随时将上下文更改为 webview(FireFox、Chorme、Safari):

NOTE: web_view is always the last key in list, so you can always change the context to webview (FireFox,Chorme,Safari) with this:

contexts = driver.contexts
driver.switch_to.contexts[-1]

返回当前上下文:

driver.context

这篇关于Appium v​​1.17.1 无法在iOS中切换WebView上下文的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-20 21:37