@FindBy和@FindAll在访问元素时返回Invocation错误



我正在运行一些WebDriver测试,并且正在修改一些元素,我想使用@FindBy()页面对象注释来生成列表WebElements。我可以毫无问题地收集个别元素。我想利用这一点来实现更干净的代码。

这是类的一个实现:

 protected class InstElements extends PageBase{
    public InstElements(){
        super();
    }
    @FindAll(@FindBy(how = How.CSS, using = ".skill-symbol.satisfactory.ng-scope"))
    public List<WebElement> satisfactoryLabels;
}

第二次实施:

protected class InstElements extends PageBase{
    public InstElements(){
        super();
    }
    @FindBy(css = ".skill-symbol.satisfactory.ng-scope")
    public List<WebElement> satisfactoryLabels;
}

我收到以下异常:

com.sun.jdi.InvocationException occurred invoking method. 

我知道我可以创建一个方法,解析如下所示的列表(像Charm一样工作):

 protected class InstElements extends PageBase{
    public InstElements(){
        super();
    }
    private static final String css_subject = ".skill-symbol.satisfactory.ng-scope")
    public List<WebElement> satisfactoryLabels(){
        return driver.findElements(By.cssSelector( css_subject ));
    }
}

但是我想利用注释,因为它们提供了更干净的代码。有人能告诉我我做错了什么吗?

好的,所以我能够通过每次使用调用时重新调用该类来解决我自己的问题。

protected class InstElements extends PageBase{
    public InstElements(){
        super();
    }
    @FindBy(css = ".skill-symbol.satisfactory.ng-scope")
    public List<WebElement> satisfactoryLabels;
}

实例化每一次使用似乎都有效,我指的是每次使用!!

 InstElements test = new InstElements();
 int value = test.satisfactoryLabels.size();

这实际上返回了一个数字,而不是来自列表的调用错误

最新更新