我有一个ListView:
我想点击ListView中的特定按钮.
如果我想用onData选择器选择:
onData(withId(R.id.button))
.inAdapterView(withId(R.id.list_view))
.atPosition(1)
.perform(click());
Run Code Online (Sandbox Code Playgroud)
我收到这个错误:
android.support.test.espresso.PerformException: Error performing 'load adapter data' on view 'with id: com.example.application:id/list_view'.
...
Run Code Online (Sandbox Code Playgroud)
我怎么解决这个问题?
所以我以编程方式在我的视图中添加了一个子视图,当我这样做时,我将所有可访问性参数附加到它:
[labelView setAccessibilityLabel:@"label"];
[labelView setIsAccessibilityElement:YES];
[labelView setUserInteractionEnabled:YES];
Run Code Online (Sandbox Code Playgroud)
但是当我像这样查询UI时:
let app = XCUIApplication()
app.staticTexts["label"]
Run Code Online (Sandbox Code Playgroud)
测试失败,因为它无法找到视图.
知道如何处理这个问题,如何为UI测试提供动态添加的视图?
是否可以单击 ViewPager 中 ListView 的第一项?
我已经尝试让它像这样工作:
onData(anything()).inAdapterView(withId(R.id.myListView)).atPosition(0).perform(click());.
但正如我从这里了解到的:使用 Espresso 测试 ViewPager。如何对项目的按钮执行操作?您不能将 onData 用于 ViewPager。另外,如果我运行测试,我会收到多个匹配项的 AmbiguousViewMatcherException。
android.support.test.espresso.AmbiguousViewMatcherException: 'with id: my.awesome.app:id/myListView' matches multiple views in the hierarchy.
Problem views are marked with '****MATCHES****' below.
如果我像这样运行测试,onView(allOf(withId(R.id.myListView),isDisplayed())).perform(click());则永远不会单击第一项。
还有另一种方法可以单击列表的第一项吗?
android listview ui-testing android-viewpager android-espresso
我有一个使用“Present As Popover”segue 呈现的视图控制器。当我运行该应用程序时,它会按预期工作,并且在弹出窗口之外点击将关闭它。但是,当我运行 UI 测试时,我无法消除弹出窗口。我该怎么做?我试过了:
app.otherElements["PopoverDismissRegion"].tap()
Run Code Online (Sandbox Code Playgroud)
但日志打印:
无法找到其他 0x61000017f8c0 的生命值:特征:35184372088832,{{0.0, 0.0},{375.0, 667.0}},标识符:'PopoverDismissRegion',标签:'dismiss popup'
在Xcode的测试套件中执行每个测试用例后,我需要测试状态.我知道观察者可以帮助实现它.但是我如何在测试中使用它?
我们的团队正在考虑根据用户场景开始测试。所以,我们正在选择一个 E2E 框架。
搜索UI test导致以下内容:
所以,我发现了这个
它说
UI测试:用户界面测试。换句话说,您必须确保屏幕上的所有按钮、字段、标签和其他元素都按照规范中的假设工作。
GUI测试:图形用户界面。你必须确保屏幕上的所有元素都按照规范中提到的那样工作,并且颜色、字体、元素大小和其他类似的东西与设计相匹配。
功能测试:产品质量保证过程,根据规范要求,对组件或系统的功能/功能进行总体测试。
E2E 测试:它需要识别系统依赖关系并确保正确的信息通过多个组件和系统传递。
我不明白UI Testing&之间的区别E2E Testing。
我在 Android Studio 中编写了 UI 测试代码。我需要为每次点击和查看等编写代码。我觉得我们为什么需要这个?我宁愿用手指直接和动态地进行测试。
嗨自动化专家,
网址:http://developer.android.com/tools/help/uiautomator/UiWatcher.html
如何实现此目的: 您可以使用此方法来处理阻止测试继续进行的已知阻塞问题.例如,您可以检查是否出现阻止测试的对话框,然后关闭对话框或执行一些其他适当的操作以允许测试继续
请输入一个示例代码,说"弹出时按OK"无法播放此视频"尝试播放视频并继续我们的测试"?
我有一个UI测试,涉及解雇系统生成UIAlertController.此警报要求用户访问设备日历的权限.测试的目标是点击OK按钮后的行为:
1 let app = XCUIApplication()
...
// this code was basically generated by the recording feature of XCode 7
2 app.alerts.elementBoundByIndex(0).collectionViews.buttons["OK"].tap()
Run Code Online (Sandbox Code Playgroud)
现在,OK第2行不是点击按钮,而是让模拟器点击第一个按钮,该Cancel按钮恰好是按钮......
此外,我发现测试框架无法准确识别出现的警报.因此,如果我检查当前的警报计数,我总是得到0:
// ...tap...
let count = app.alerts.count // == 0
Run Code Online (Sandbox Code Playgroud)
如果我使用NSPredicate条件并等待几秒钟,也会发生这种情况.
UI测试是否可能无法与系统生成的警报一起可靠地工作?我正在使用XCode 7.0.1.
如何在我的一个集合视图中测试无限滚动?我尝试模拟滚动,就像在"拉动刷新"示例中解释的那样,但它没有奏效.
let app = XCUIApplication()
let start = app.coordinateWithNormalizedOffset(CGVectorMake(1, 6))
let finish = app.coordinateWithNormalizedOffset(CGVectorMake(1, 0))
var x = 0
while(x < 20){
x++
start.pressForDuration(0, thenDragToCoordinate: finish)
}
Run Code Online (Sandbox Code Playgroud)
(while条件仅用于测试,我将更改它以询问当滚动工作时是否存在特定元素)
我正在为我的应用程序进行ui测试,并坚持点击我的应用程序的登录按钮.我无法找到我给出标识符注册按钮的元素(元素是索引的第3个,这不是问题).
let cellQuery = self.app.tables.cells.element(boundBy: 3)
let signInButton = cellQuery.buttons["signup button"]
if signInButton.exists {
signInButton.tap()
}
Run Code Online (Sandbox Code Playgroud) ui-testing ×10
ios ×4
android ×3
xcode ×3
xcode7 ×3
automation ×1
e2e-testing ×1
gui-testing ×1
listview ×1
position ×1
row ×1
swift ×1
swift3 ×1
uitableview ×1
uitest ×1
unit-testing ×1
xctest ×1
xctestcase ×1