我正在测试混合应用,其中每个视图都有一个Web视图 在其中一个Web视图中,我有一个具有相同属性的元素列表。它们具有相同的xpath定位器,如:
//h4[contains(@data-role, 'product-name')]
我想创建这些元素的列表并迭代它们,计算它们,得到它们的属性。
在文档中,我发现了两种类似的方法:
findElement(locator, value)
和
findMultipleElements(locator, value)
虽然我完全不清楚如何使用它。我试图找到它的例子,但没有成功。
有人可以帮我这个吗?
答案 0 :(得分:0)
您可以尝试类似的方法吗?由于您实际上应该关心的是ElementReference,因此可以使用简单的for / foreach语句迭代从findMultipleElements返回的lsit:
yourList = findMultipleElements(locator, value);
yourList.size(); //this will get you the count of found elements with that locator
for(Atom<ElementReference> item : yourList ){
item.getAttribute...
//and whatever you want
}
答案 1 :(得分:0)
这是我找到的解决方案。
@kaqqao是正确的,findMultipleItems
调用返回Atom<List<ElementReference>>
不能使用的onWebView()
,因为那里只有withElement()
接受Atom<ElementReference>
或仅接受ElementReference
doEval
您可以执行的操作是查找多个项目,并从Atom中获取结果。如果您在Web.java中检查espresso的val elements = with(AtomAction(findMultipleElements(
Locator.XPATH,
"YOUR_COMPLEX_XPATH"
), null, null)) {
onView(ViewMatchers.isAssignableFrom(WebView::class.java)).perform(this)
this.get()
}
方法的源,这就是它的内部工作方式。
List<ElementMatcher>
此代码将为您提供elements.forEach {
onWebView().forceJavascriptEnabled().withElement(it).perform(webClick())
}
。
然后将其运行为
<