【问题标题】:Appium Java, How to use specific pageFactory requirementAppium Java,如何使用特定的 pageFactory 要求
【发布时间】:2018-07-07 17:07:57
【问题描述】:

我有一个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&lt;MobileElement&gt;,有没有办法将元素与MobileElement 进行子/父功能比较?

问题来自要求不要在主函数中使用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;

【问题讨论】:

  • 您能提供您的应用程序的检查器视图吗?如果没有看到这一点,很难建议如何关联这两种对象类型。

标签: java appium findby


【解决方案1】:

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

然后,您将遍历每个电影片名,并为每个片名检查整个电视片名列表中是否有匹配的内容描述。

【讨论】:

    【解决方案2】:

    谢谢!我只是想摆脱 FindElement:

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

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

    【讨论】:

    • 正确,因为 Movie 对象不包含 TV 对象。
    猜你喜欢
    • 2021-11-02
    • 2018-05-20
    • 2019-04-25
    • 1970-01-01
    • 2016-07-19
    • 1970-01-01
    • 2018-10-22
    • 2021-06-30
    • 2021-07-05
    相关资源
    最近更新 更多