Appium中PageObject注解查找元素

1.@AndroidFindBy与@HowToUseLocators。
a.基本查找逻辑:如果只有一个@AndroidFindBy注解,则只查找这一个。如果有多个注解,但是没有@HowToUseLocators,则默认是链式查找的,也就是:先查找第一个@AndroidFindBy中的id,再用查找到的结果元素result再去查找下一个@AndroidFindBy中的id,直到所有的@AndroidFindBy中的id都查找完毕。但是要注意的是在查找的过程中只要有一个@AndroidFindBy中的id没有结果,则直接返回null。具体逻辑代码在AppiumFunction类中:

  @Override default  AppiumFunction andThen(java.util.function.Function after) {
        Objects.requireNonNull(after);
        return (F f) -> {
            T result = apply(f);
            return Optional.ofNullable(result != null ? after.apply(result) : null).orElse(null);
        };
    }

b.具体使用方式:先查最外层的viewPager(com.kikijie:id/swipe_toLoad_layout),在查viewPager的子元素scrollview(com.kikijie:id/id_stickynavlayout_innerscrollview),最后查找scrollview的子元素coverview(com.kikijie:id/hot_new_grid_cover_view);

    @AndroidFindBy(id = "com.kikijie:id/swipe_toLoad_layout")
    @AndroidFindBy(id = "com.kikijie:id/id_stickynavlayout_innerscrollview")
    @AndroidFindBy(id = "com.kikijie:id/hot_new_grid_cover_view")

或者配合@HowToUseLocators注解使用。默认HowToUseLocators是CHAIN

    @HowToUseLocators(androidAutomation = CHAIN)
    @AndroidFindBy(id = "com.kikijie:id/swipe_toLoad_layout")
    @AndroidFindBy(id = "com.kikijie:id/id_stickynavlayout_innerscrollview")
    @AndroidFindBy(id = "com.kikijie:id/hot_new_grid_cover_view")
    public WebElement firstWatch;

c.使用场景:当页面中有相同元素时,可以通过父元素来限定要找的元素。
d.如果@HowToUseLocators设置为ALL_POSSIBLE,则会查找AndroidFindBy数组中的所有元素,取第一个。

    @HowToUseLocators(androidAutomation = ALL_POSSIBLE)
    @AndroidFindBy(id =  "com.kikijie:id/live_bottom_shot")
    @AndroidFindBy(id = "com.kikijie:id/btn_snapshot")
    public WebElement snapshotBtn;

e.ALL_POSSIBLE的使用场景:当页面可能会出现多种可能时使用

f.ALL_POSSIBLE如果想查找所有元素则可以设置返回值为List类型

   @HowToUseLocators(androidAutomation = ALL_POSSIBLE)
    @AndroidFindBy(id =  "com.kikijie:id/live_bottom_shot")
    @AndroidFindBy(id = "com.kikijie:id/btn_snapshot")
    public  List snapshotBtn;

g.使用场景:例如我们有广告弹窗,升级弹窗等等弹窗时,会影响我们的测试流程,这个时候可以使用ALL_POSSIBLE返回List所有元素依次关闭。

Appium中PageObject注解查找元素_第1张图片
QQ图片20180129192831.jpg

你可能感兴趣的:(Appium中PageObject注解查找元素)