我的Android UI测试没有ID

时间:2016-05-23 09:43:31

标签: android react-native android-espresso ui-testing

我想在我的Android应用程序上编写一些UI测试,以便获取自动截图。

我的应用程序是用React-Native.

编写的

为了编写我需要知道我的组件资源ID的测试,但正如你在本截图中看到的,我在这个React-Native示例应用程序中看不到ui Automator Viewer的任何资源ID。

Look this picture.

我想知道是否有办法给我的组件提供一些ID,这样我就可以编写一些测试,或者是否有其他方法可以选择我的组件。

注意:我正在尝试编写Espresso Test。

4 个答案:

答案 0 :(得分:9)

testID仅适用于iOS,未映射到Android中的资源ID。

您可以为组件指定accessibilityLabel。在uiautomatorviewer中,它显示为content-desc

要跨平台,您应该同时指定:

<Text style={styles.welcome} accessibilityLabel="MyId" testID="MyId">
  Welcome!
</Text>

然后,您可以使用tilde selector browser.waitForExist("~MyId")

之类的webdriver搜索它

答案 1 :(得分:0)

是的!您可以将testID道具传递给实现<View />道具的任何组件,documented here

  

testID 字符串

     

用于在端到端测试中找到此视图。

另请参阅这篇非常有用的blogpost关于React Native中的UITesting的信息。这是关于iOS的测试,但Android的javascript部分将是相同的。

答案 2 :(得分:0)

首先,Android对象的每个UI组件的ID必须在resource(res)文件夹中定义为布局XML(您需要确保已在正确的标签中定义它)并获取ID Android请按照以下步骤操作:

1. Launch Android Studio, Click on "Android Device Monitor" icon next to "SDK Manager" 

2. Connect your device and launch the application

3. Select your device name from the list of devices on the left panel

4. Click on Dump "View Hierarchy for UI Automate" 

5. Now you can hoover over any view on thde device dump and can see Resource-d in the node details in the right column.

注意:您还可以截取屏幕截图

答案 3 :(得分:0)

1)首先,如果您的项目可以转到布局并将ID添加到这些组件,然后使用uiautomator viewer截取屏幕截图,您将找到您的资源ID

2)如果选项1不可能(这种情况极不可能发生)你仍然可以从你的截图中测试它我只能看到一个编辑文本框,所以使用uiauatomator你可以根据类测试它。以下是代码:

private static UiDevice mDevice;


func(){

mDevice = UiDevice.getInstance(getInstrumentation());


UiObject xyz=new UiObject(new UiSelector().**getClass**(android.widget.EditText));


xyz.click();


xyz.setText("abcdef");
}

//我不确定 getclass()或getclassName()检查这两个选项

// xyz.click()是必要的,因为在uiautoamtor中你将无法正确显示文字

在文本框中直到和除非选中