使用Appium for Automation访问React元素

时间:2015-11-26 11:47:12

标签: webview reactjs automation react-native appium

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

  

如果我错了,请理解并纠正我,How React Works   是它使用真正的DOM创建一个虚拟DOM并生成一个   动态类名对应于javascript中的那些。 Diff Algorithm提供了区分对象的有效方法   使用这些自动生成的类名。

我面临的问题是使用Appium我无法使用任何findElementsBy方法访问这些webview中的元素。在生成的每个新构建上,React都会更改类名,这个参数对于我们真正可以依赖的UIAutomator是唯一可见的参数。

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

chrome inspect在我的应用程序中提供了webview的详细信息:

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

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

也会感谢此处的任何线索。

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

独立检查器可用于识别反应元素,例如“ react-devtools”。

安装react-devtools独立应用程序的步骤:

  • yarn全局添加react-devtools
  • 安装完成后,在终端“ react-devtools”中运行以下命令。 在应用程序内开发人员菜单中,单击“切换检查器”,然后单击“检查”以检查元素。

    对于RN 0.43或更高版本,它将自动连接。 可以很容易地找到一个元素。 考虑阅读this