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 によって実装されるときにスローされるクラス キャスト例外)。
誰でも助けることができますか?
ありがとう