我正在运行一些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.
我知道我可以创建一个方法解析到下面的列表(像魅力一样工作):
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 ));
}
}
但我想利用注释,因为它们提供了更清晰的代码。有人可以让我知道我做错了什么吗?
答案 0 :(得分:0)
好的,所以我每次使用电话时都可以通过重新调用类来修复自己的问题。
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();
这实际上从列表中返回一个数字而不是一个调用错误