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

时间:2018-01-29 03:18:59

标签: java appium findby

我有一个pageFactory课程:

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的子/父功能?

问题来自于不在主函数中使用By.id("id")或其他定位器但仅使用screenFactory的要求!

如果我使用screenFactory这个:

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

它再也不起作用,从上面的情况来看,它会给我同样的信息:

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

2 个答案:

答案 0 :(得分:0)

如果没有看到应用程序的检查员视图,我可以给出的唯一建议是让您的开发人员在TV Title对象的内容描述中提供父信息。然后,您将拥有匹配这两个对象所需的关联。

然后,您将遍历每个电影标题,并且每次检查整个电视标题列表,以查找匹配的内容描述。

答案 1 :(得分:0)

谢谢!我只是想摆脱FindElement:

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

但似乎不可能......