我一直在使用Appium来测试混合android应用程序,包括NATIVE和WEBVIEW上下文之间的频繁转换。这些Webview是使用React库开发的。
根据我的理解和纠正,如果我错了,React的工作方式 是它使用真实的DOM创建虚拟DOM并生成与javascript中的名称相对应的动态类名。该DIFF算法提供了有效的方法来区分使用这些自动生成的类名称的对象。
我面临的问题是,使用Appium我无法使用任何findElementsBy方法从这些Web视图中访问元素。类名是UIAutomator唯一可见的参数,我们可以真正依靠它进行更改,这是由React在生成的每个新构建上进行的。
findElementsBy
有没有办法让我可以使用React库本身将这些自动生成的类名称重构为一些明智的名称?
该铬检查提供了我的应用程序中的WebView的详细信息:
<div class="_32f8NoUfyUtNSxo3w4Ptbp" data-reactid=".0.1.$=13:0.0.0">…</div>
关于如何在这种情况下使用Appium访问实际DOM元素的任何想法?
信息:WebView.setWebContentsDebuggingEnabled(true)在应用代码中设置。
WebView.setWebContentsDebuggingEnabled(true)
还要感谢这里的任何潜在客户。
基于此链接:https : //github.com/facebook/react- native/issues/7135
解决此问题的方法:在视图上同时使用accessible和accessibleLabel
可访问性标签上的DOC:https : //facebook.github.io/react-native/docs/accessibility.html#accessibilitylabel- ios-android
在我的本机组件上:
<TextInput accessible={true} accessibilityLabel={'Tap Me'}></TextInput>
在我的脚本测试:
mobileElement = find_Element(accessibilty_id, "Tap Me") mobileElement.send_keys "hello world"