gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 05:51:18 25 4
gpt4 key购买 nike

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

我正在尝试使用 UiSelector 定位可见屏幕空间(AKA 视口(viewport))之外的 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")})

逻辑结论是该元素不存在或我的定位器策略错误。但事情是这样的,当我更改文本以查找 的元素时在可见空间/视口(viewport)内 ,定位器工作完美。例子:
@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() 的工作方式?
这是另一种解决方案吗?

非常感谢。

最佳答案

我在自动化中遇到过类似的问题。我发现的唯一方法是向上或向下滚动直到元素在屏幕上可见,然后通过“名称”访问元素。您可以使用以下命令进行滚动。

driver.findElementByAndroidUIAutomator("new UiScrollable(new UiSelector()).scrollIntoView(text(\" 你的元素\"));");

在屏幕上显示所需元素后,您可以轻松访问该元素。

谢谢

关于Appium 无法使用 UiSelector 在屏幕外定位元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53859297/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com