Appium Java,如何使用特定的 pageFactory 要求

Appium Java, How to use specific pageFactory requirement

我有一个 pageFactory class:

public class screenFactory {
    @AndroidFindBy(id = "itemFilm")
    public List<MobileElement> listMovies;

    @AndroidFindBy(id = "tvTitle")
    public List<MobileElement> listTvTitle;
}

每个 itemFilm 包含 tvTitle(有时不包含)。

问题:如何仅使用 pageFactory 进行检查?

假设情况 1:

screenFactory.listMovies.size() equals 6;
screenFactory.listTvTitles.size() equals 6;

那就一切都好!

假设情况 2:

screenFactory.listMovies.size() equals 6;
screenFactory.listTvTitles.size() equals 4;

那么我们有一个问题,如何检测 listMovies 的哪些元素包含 tvTitles 作为子元素,哪些不包含?

换句话说,有两个 List<MobileElement>,有没有办法将元素作为 MobileElement 与 Child/Parent 特征进行比较?

问题来自要求不要在 main 函数中使用 By.id("id") 或其他定位器,而是仅使用 screenFactory !

如果我在 screenFactory 中使用这个:

@HowToUseLocators(androidAutomation = LocatorGroupStrategy.CHAIN)
@AndroidFindBy(id = "itemFilm")
@AndroidFindBy(id = "tvTitle")
public List<MobileElement> listTvTitle;

它不再起作用,因为在上面的情况 #2 中它会给我同样的结果:

screenFactory.listMovies.size() equals 6;
screenFactory.listTvTitles.size() equals 4;

在没有看到您的应用程序的检查器视图的情况下,我能给出的唯一建议是让您的开发人员在电视节目 objects 的 content-description 中提供 parent 信息。然后你有你需要匹配两个 objects.

的关联

然后您将遍历每个电影标题,并为每个检查整个电视节目列表以找到匹配的content-description。

谢谢!我只是想摆脱 FindElement:

screenFactory.listMovies.get(i).FindElement(By.id("TvTitles"))

但似乎那是不可能的....