1

Serenity BDD JBehave フレームワークによって管理される PageObject クラスで MobileElement クラスを使用した人はいますか?

Appium ドライバーで使用したい PageObject クラスは次のとおりです。

public class Benning extends PageObject {

    @iOSFindBy(id = "iosThingId")
    @AndroidFindBy(id = "androidThingId")
    private MobileElement thing;

    @iOSFindBy(id = "iosOtherThingId")
    @AndroidFindBy(id = "androidOtherThingId")
    private MobileElement otherThing;

    public void doStuff(){
        thing.swipe(SwipeElementDirection.DOWN, 3);
    }   
}

そして、ここに私が取り組んでいるものがありますが、これは少し面倒です

public class Benning extends PageObject {

    @iOSFindBy(id = "iosThingId")
    @AndroidFindBy(id = "androidThingId")
    private WebElement thing;

    @iOSFindBy(id = "iosOtherThingId")
    @AndroidFindBy(id = "androidOtherThingId")
    private WebElement otherThing;

    private String androidThingId = "androindThingId";
    private String iosThingId = "iosThingId";
    private String androidOtherThingId = "androidOtherThingId";
    private String iosOtherThingId = "iosOtherThingId";

    public Benning (WebDriver driver) {
            super(driver);
        //This allows us to use the @Android and @IosFindBy annotations
            PageFactory.initElements(new AppiumFieldDecorator(getDriver()), this);
        }

    public void doStuff(){
        String iosOrAndroid = ((WebDriverFacade) driver).getProxiedDriver().toString();

        AppiumDriver<MobileElement> wazz = ((AppiumDriver<MobileElement>) ((WebDriverFacade) getDriver()).getProxiedDriver());

        MobileElement mobileElementThing;
        if (iosOrAndroid.containsIgnoreCase("Android")){
            mobileElementThin = wazz.findElementById(androidThingId);
        } else {
            mobileElementThing = wazz.findElementById(iosThingId);
        }                       

        mobileElementThing.swipe(SwipeElementDirection.DOWN, 3);
    }
}

これが私がこれまでに試したことです:

フレームワークが内部で WebDriverFacade クラスを使用しているため、明示的に AppiumDriver をコンストラクターに渡して PageObject をインスタンス化することはできません。

見つかった WebElement オブジェクトを明示的に MobileElement オブジェクトにキャストすることはできません (WebElement が WebElementFacade によって実装されるときにスローされるクラス キャスト例外)。

誰でも助けることができますか?

ありがとう

4

0 に答える 0