我正在运行一些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();
这实际上返回了一个数字,而不是来自列表的调用错误