Appium无法使用UiSelector在屏幕外定位元素

我开始为使用NativeScript编码的移动应用程序(它曾经是一个混合的Cordova应用程序)自动化测试套件,并且证明很难找到一些元素.

我正在尝试使用UiSelector找到可见屏幕空间(AKA视口)之外的TextView小部件:

@AndroidFindBy(uiAutomator = "new UiSelector().textContains(\"CFT\")")
private MobileElement labelCFT;

当我尝试与这样的元素交互时,结果是以下消息:

org.openqa.selenium.NoSuchElementException: Can't locate an element 
by this strategy: By.chained({By.AndroidUIAutomator: 
new UiSelector().textContains("CFT")})

逻辑结论是元素不存在或我的定位策略有缺陷.但是,当我更改文本以找到可见空间/视口内的元素时,定位器可以完美地工作.例:

@AndroidFindBy(uiAutomator = "new UiSelector().textContains(\"loans\")")
private MobileElement labelCFT;

然后:

public void whatText() {
    System.out.println("Text of the label: " + labelCFT.getText());
}

我得到了正确的“标签文本:这些是你的贷款”.

显然,它是UiSelector的限制,或者至少是Appium使用它的方式.

我想象的唯一选择是滚动整个屏幕,然后触发@AndroidFindBy,然后重复,直到没有滚动.

这是假设UiSelector和textContains()的工作原理吗?
这是另一种解决方案吗?

非常感谢.

最佳答案 在Android应用程序中,如果要对元素执行任何不可见的操作,您只能单击或对屏幕上可见的元素执行任何操作,您可以使用触摸操作方法,您需要指定x和y cordinated我认为在我的情况下,这可能对你有所帮助

TouchAction ta = new TouchAction(driver);
            ta.press(PointOption.point(207, 582)).moveTo(PointOption.point(8, -360)).release().perform();
点赞