我遇到了这个问题,我需要点击我应用中某些文字旁边的特定按钮。
例如:让我成为我的应用程序的一个屏幕,其中包含以下文字。
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请参阅此链接,了解它的外观。
提前致谢!
答案 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);
你应该能够将它重构为一个简单易用的方法。