如何单击Robotium中特定文本旁边的按钮

时间:2014-03-10 11:51:56

标签: android robotium

我遇到了这个问题,我需要点击我应用中某些文字旁边的特定按钮。

例如:让我成为我的应用程序的一个屏幕,其中包含以下文字。

    xxxx-xxxx-xxxx  Button1 Button2
    yyyy-yyyy-yyyy  Button3 Button4

现在我想点击Button1,如果我作为输入传递的文本与“xxxx-xxxx-xxxx”匹配。并且,如果输入文本与“yyyy-yyyy-yyyy”匹配,则为Button3。

https://www.dropbox.com/s/1fgr4uz4mm2mfm6/Untitled.png请参阅此链接,了解它的外观。

提前致谢!

1 个答案:

答案 0 :(得分:2)

我假设他们在同一个Viewgroup中。如果是这种情况,那就不是那么糟糕了。

您需要做的是将其分解为一系列问题

1)找到视图,这很简单solo.getText(String text)将返回具有该文本的文本视图,如果它是编辑文本,则getEditText(String text)将起作用。

2)找到您找到的视图和要单击的按钮之间的父视图。你可以通过在上面返回的视图上调用getParent()并将其转换为(ViewGroup)

来完成此操作

3)从该视图父级中找到您想要的文本视图,如果它们都具有相同的结构,则最简单的是在上面的视图组中使用getChildAt(i),其中我可能是您提到的结构中的2。您需要将其强制转换为按钮。

把它们放在一起它会看起来像:

View view = solo.getEditText("xxxx-xxxx-xxxx"); //or solo.getText("xxxx-xxxx-xxxx")
ViewGroup viewGroupContaingTextAndButton = (ViewGroup) view.getParent();
Button button = viewGroupContaingTextAndButton.getChildAt(2);

你应该能够将它重构为一个简单易用的方法。