Xcode7 ui 测试:staticTexts["XX"].swipeRight() 滑动不够远
Xcode7 ui testing: staticTexts["XX"].swipeRight() swipes not far enough
对于 UI 测试,我想执行向右滑动的手势以使更多按钮可访问。我要滑动的元素位于屏幕底部。我通过以下方式访问它:
element.staticTexts["TEST TEXT"].swipeRight()
执行测试时,滑动距离不够远。它不会触发元素完全向右滑动并显示我想要点击的更多按钮。
我的感觉是swipeRight()
抓住静态文本的中间并执行手势。
是否有可能将元素向左移动更多,使其向右滑动更多?
感谢您的任何建议!
试试这个方法:
let startPoint = element.staticTexts["TEST TEXT"].coordinateWithNormalizedOffset(CGVectorMake(0, 0)) // center of the element
let finishPoint = startPoint.coordinateWithOffset(CGVectorMake(1000, 0))
startPoint.pressForDuration(0, thenDragToCoordinate: finishPoint)
您可以调整1000
达到您想要的效果。
至少从 Swift 4.1、Xcode 9.4.1 开始,您需要的值表示元素宽度和高度的百分比 - 0.0至 1.0.
对于长滑动,您需要在元素上拖动大约 60%,如下所示:
// right long swipe - move your 'x' from 0.0 to 0.6
let startPoint = element.coordinate(withNormalizedOffset: CGVector(dx: 0.0, dy: 0.0))
let endPoint = element.coordinate(withNormalizedOffset: CGVector(dx: 0.6, dy: 0.0))
startPoint.press(forDuration: 0, thenDragTo: endPoint)
和:
// left long swipe - move your 'x' from 0.6 to 0.0
let startPoint = element.coordinate(withNormalizedOffset: CGVector(dx: 0.6, dy: 0.0))
let endPoint = element.coordinate(withNormalizedOffset: CGVector(dx: 0.0, dy: 0.0))
startPoint.press(forDuration: 0, thenDragTo: endPoint)
您可以将 dy
值设置为 0.5,例如,如果您想在元素的中心拖动。但是,请注意,您的 dy
值必须相同才能向右或向左滑动。如果您要将其转换为向上或向下滑动,则 dx
值需要相同,而 dy
值将适当更改。 (滑动需要沿直线移动。)
另请注意,forDuration
值表示拖动前按住触摸的秒数。值越大,初始按下的时间越长。
我在此 中发布了一个 XCUIElement
长滑动扩展。
对于 UI 测试,我想执行向右滑动的手势以使更多按钮可访问。我要滑动的元素位于屏幕底部。我通过以下方式访问它:
element.staticTexts["TEST TEXT"].swipeRight()
执行测试时,滑动距离不够远。它不会触发元素完全向右滑动并显示我想要点击的更多按钮。
我的感觉是swipeRight()
抓住静态文本的中间并执行手势。
是否有可能将元素向左移动更多,使其向右滑动更多?
感谢您的任何建议!
试试这个方法:
let startPoint = element.staticTexts["TEST TEXT"].coordinateWithNormalizedOffset(CGVectorMake(0, 0)) // center of the element
let finishPoint = startPoint.coordinateWithOffset(CGVectorMake(1000, 0))
startPoint.pressForDuration(0, thenDragToCoordinate: finishPoint)
您可以调整1000
达到您想要的效果。
至少从 Swift 4.1、Xcode 9.4.1 开始,您需要的值表示元素宽度和高度的百分比 - 0.0至 1.0.
对于长滑动,您需要在元素上拖动大约 60%,如下所示:
// right long swipe - move your 'x' from 0.0 to 0.6
let startPoint = element.coordinate(withNormalizedOffset: CGVector(dx: 0.0, dy: 0.0))
let endPoint = element.coordinate(withNormalizedOffset: CGVector(dx: 0.6, dy: 0.0))
startPoint.press(forDuration: 0, thenDragTo: endPoint)
和:
// left long swipe - move your 'x' from 0.6 to 0.0
let startPoint = element.coordinate(withNormalizedOffset: CGVector(dx: 0.6, dy: 0.0))
let endPoint = element.coordinate(withNormalizedOffset: CGVector(dx: 0.0, dy: 0.0))
startPoint.press(forDuration: 0, thenDragTo: endPoint)
您可以将 dy
值设置为 0.5,例如,如果您想在元素的中心拖动。但是,请注意,您的 dy
值必须相同才能向右或向左滑动。如果您要将其转换为向上或向下滑动,则 dx
值需要相同,而 dy
值将适当更改。 (滑动需要沿直线移动。)
另请注意,forDuration
值表示拖动前按住触摸的秒数。值越大,初始按下的时间越长。
我在此 XCUIElement
长滑动扩展。