Проблема синхронизации с appium AndroidFindBy и элементом AppiumFieldDecorator - PullRequest
0 голосов
/ 09 мая 2019

Я пытаюсь изменить структуру фреймворка и сталкиваюсь с неожиданной проблемой, когда получаю разные результаты с кодом, похожим на меня.Похоже, я не очень хорошо понимаю этот аспект Appium / Java.Может ли кто-нибудь объяснить мне, почему в первом сценарии мой код ждет 20 секунд (чего я не хочу), а во втором сценарии - требуемую 1 секунду?Спасибо!

Сценарий один:

// SubPage.java (extends BasePage)

@AndroidFindBys(value = {
    @AndroidBy(id = "xx")
})
private List<MobileElement> element;

// Passing in sec=1, but it actually waits 20 seconds, which is incorrect
public SubPage tapTheButton(int sec) { 
    tapButton(element, sec);
    return new SubPage(driver);
}

Сценарий два:

// SubPage.java (extends BasePage)

@AndroidFindBys(value = {
    @AndroidBy(id = "xx")
})
private List<MobileElement> element;

// Passing in sec=1, and it waits for 1 second, which is correct
public SubPage tapTheButton(int sec) {
    setTiming(sec);
    tap(element);
    setDefaultTiming();
    return new SubPage(driver);
}

BasePage.java

protected boolean tapButton(List<MobileElement> element, int sec) {
    boolean isSuccess;
    setTiming(sec);
    isSuccess = tap(element);
    setDefaultTiming();
    return isSuccess;
}

public synchronized void setTiming(int sec) {
    PageFactory.initElements(new AppiumFieldDecorator(driver, Duration.ofSeconds(sec)), this);
}

public synchronized void setDefaultTiming() {
    PageFactory.initElements(new AppiumFieldDecorator(driver, Duration.ofSeconds(20)), this);
}

// Part of the method, not sure if it's important
public boolean tap(MobileElement el) {
    TapOptions tapOptions;
    ...
    for (int j = 0; j < 2; j++) {
        try {
            tapOptions = new TapOptions().withElement(ElementOption.element(el));
            new TouchAction(driver).tap(tapOptions).perform();
            result = true;
            break;
        } catch (Exception e) {
            ...
        }
    }
    ...
}   

...