小编典典

使用Appium for Automation访问React Elements

reactjs

我一直在使用Appium来测试混合android应用程序,包括NATIVE和WEBVIEW上下文之间的频繁转换。这些Webview是使用React库开发的。

根据我的理解和纠正,如果我错了,React的工作方式
是它使用真实的DOM创建虚拟DOM并生成与javascript中的名称相对应的动态类名。该DIFF算法提供了有效的方法来区分使用这些自动生成的类名称的对象。


我面临的问题是,使用Appium我无法使用任何findElementsBy方法从这些Web视图中访问元素。类名是UIAutomator唯一可见的参数,我们可以真正依靠它进行更改,这是由React在生成的每个新构建上进行的。

  1. 有没有办法让我可以使用React库本身将这些自动生成的类名称重构为一些明智的名称?

铬检查提供了我的应用程序中的WebView的详细信息:

<div class="_32f8NoUfyUtNSxo3w4Ptbp" data-reactid=".0.1.$=13:0.0.0">…</div>
  1. 关于如何在这种情况下使用Appium访问实际DOM元素的任何想法?

信息:WebView.setWebContentsDebuggingEnabled(true)在应用代码中设置。

还要感谢这里的任何潜在客户。


阅读 250

收藏
2020-07-22

共1个答案

小编典典

基于此链接: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"
2020-07-22