如何在Appium中启用和使用WebView for iOS自动化

如何在Appium中启用和使用WebView for iOS自动化

问题描述:

我正在尝试使用由Ionic2/Angular2/Typescript开发的Appium自动化混合应用程序。如何在Appium中启用和使用WebView for iOS自动化

当我尝试识别元素时,我能够在Appium Inspector中的WebView中查看元素,但是当我尝试使用脚本识别它们时,它将引发错误。

An element could not be identified using given search parameter. 

error: Invalid locator strategy: partial link text 

我想通过Xpath,名称,linkText来识别elemnet,但我不能这样做。

我也加入

capabilities.SetCapability("autoWebView", "true"); 

我使用C#自动化启用功能的WebView。任何人都可以提供解决方案吗?

当我使用XPath它显示在处理该命令(原始错误:连接ECONNREFUSED)一种未知的服务器端发生错误

上述错误显示,当我设定了上述能力之后调用var contextNames= driver.Contexts;。我是否也需要设置浏览器的功能?

两件事情:

。确保setWebContentsDebuggingEnabled在您的网页浏览代码中设置为true。

。在访问web视图上的元素之前,在操作之后切换上下文并返回。类似的事情在Java下面的代码切换到的WebView

Set<String> contextNames = driver.getContextHandles(); 
String setContext = contextNames.toArray()[1].toString(); 
driver.context(setContext);// set context to WEBVIEW_com.my.package 

请不要阅读What exactly do autoWebview does?

对于点网客户端的操作,类似的代码都为:

var contextNames = driver.GetContexts(); //correction to your code 
driver.SetContext(contextNames[1]); // for webview_1, for native_view 0 
+0

@@ nullpointer我需要设置这个'setWebContentsDebuggingEnabled'属性。我是否需要问我的开发人员在他们的代码中设置它,然后构建ipa/apk? –

+0

@SurajGupta:是的,它被设置为应用程序代码。 – nullpointer

+0

我在开发代码中检查过它,它已经设置为true。 您可以评论为什么我在使用'var contextNames = driver.Contexts;' 检索所有上下文时出现错误错误是**处理命令时出现未知的服务器端错误(原始错误:连接ECONNREFUSED)* * –