当前位置: 首页 > 知识库问答 >
问题:

PageFactory和Appium的丢失不兼容-替代解决方案?

方光华
2023-03-14

java.lang.IllegalArgumentException:无法将io.appium.java_client.ios.ioselement字段screens.loginscreen.signinemail设置为org.openqa.selenium.remote.remoteWebelement$$enhancerbycglib$$62bef779

此外,我不能将WebElements转换为IOSElements,因为这也会从JVM返回一个错误(不能转换)。

是否有方法使用PageFactory设计初始化IOSElements?我的示例代码如下:

public class LoginScreen {

private WebDriver driver;

@FindBy(className = "UIATextField")
public IOSElement signInEmail;

@FindBy(className = "UIASecureTextField")
public IOSElement signInPassword;

@FindBy(id = "Log in")
public IOSElement loginButton;

@FindBy(id = "Forgot your password?")
public IOSElement forgotPasswordButton;

public LoginScreen(WebDriver driver) {
    this.driver = driver;
    PageFactory.initElements(new AppiumFieldDecorator(driver), this);
}

public SomeOtherObject login(String email, String password) {
    signInEmail.setValue(email);
    signInPassword.setValue(password);
    loginButton.click();
    return new SomeOtherObject(driver);
}

}

共有1个答案

蒯宇定
2023-03-14

您可以尝试对WebElement类型的定位器使用@IOSFindBy注释。您可以在Appium github页面上找到一些示例。

对于您的示例,我想到的另一件事是尝试转换为MobileElement而不是WebElement

编辑:

<dependency>
    <groupId>io.appium</groupId>
    <artifactId>java-client</artifactId>
    <version>2.1.0</version>
</dependency>
import io.appium.java_client.ios.IOSElement;
import io.appium.java_client.pagefactory.AppiumFieldDecorator;
import io.appium.java_client.pagefactory.iOSFindBy;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.support.PageFactory;

public class ATestClass {
    private WebDriver driver;

    @iOSFindBy(className = "classname")
    public IOSElement testing;

    public ATestClass(WebDriver driver)
    {
        this.driver = driver;
        PageFactory.initElements(new AppiumFieldDecorator(driver), this);
    }

    public void ATestMethod()
    {
        testing.click();
    }
}
 类似资料:
  • 本文向大家介绍php中json_encode不兼容JSON_UNESCAPED_UNICODE的解决方案,包括了php中json_encode不兼容JSON_UNESCAPED_UNICODE的解决方案的使用技巧和注意事项,需要的朋友参考一下 PHP5.4才支持JSON_UNESCAPED_UNICODE这个参数,此参数是让中文字符在json_encode的时候不用转义,减少数据传输量。但在PHP

  • 我在一本书中发现了一个“用餐哲学家问题”的替代解决方案,用Java编写: 解决方案的文本是: 或者,我们可以给筷子贴上从e到N-1的标签。每个哲学家都试图先拿起编号较低的筷子。这基本上意味着每个哲学家都会先选择左边的筷子,再选择右边的筷子(假设你是这样给它贴标签的),除了最后一位哲学家会选择相反的方式。有了这个解决方案,哲学家不可能拿着大筷子而不拿着小筷子。这就阻止了循环的能力,因为循环意味着较高

  • 本文向大家介绍React中this丢失的四种解决方法,包括了React中this丢失的四种解决方法的使用技巧和注意事项,需要的朋友参考一下 发现问题 我们在给一个dom元素绑定方法的时候,例如: React组件中不能获取refs的值,页面报错提示:Uncaught TypeError: Cannot read property 'refs' of null or undefind 小栗子 Reac

  • 从codingBat解决这个问题 给定一个字符串,返回字符串中最大“块”的长度。块是相同的相邻字符的运行。 我试图解决它使用一个为循环如下: 它胜过了所有的案子,除了一个。有人能用一个for循环显示解决方案吗? 很抱歉这么晚才提到,但您不能使用正则表达式或集合框架中的任何东西。

  • 我写了一个相当基本的js函数,它以编程方式自动将iPhone键盘完美地对准每一个聚焦的输入字段(如果你喜欢,可以随意使用它!)。对齐主要由window.scroll处理——这是一种标准方法,适用于任何浏览器视图,UIWebView除外,因此是phonegap/cordova(2.1)。所以我需要一个变通方法。 我的工作代码: 工作在一切,但UIWebView,这是。正如我上面提到的,除了windo

  • 我有一个程序使用片段,但我有一个问题,当我包括列表视图在我的传呼机当一个项目在滑动菜单选择。 这些错误是: 在制表符适配器上 公共类TabsPagerAdapter扩展FragmentStatePagerAdapter{ } 行中的错误: public FragmentActivity getItem(int index){ 此行有多个标记-实现android.support.v4.app.Fra