如何在Selenium WebDriver中使用页面对象(PageFactory)中的数组?

时间:2012-07-19 11:16:49

标签: arrays selenium webdriver

我在JUnit Eclipse中使用Selenium Web Driver。我有这样的课程:

import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.CacheLookup;
import org.openqa.selenium.support.FindBy;

//Path
 public class Path {
int i;
String[]path_name;
@FindBy(linkText=path_name[i])
@CacheLookup
private WebElement path;
public void path(int number,String[]path_name){
 for (i=1; i<number; i++){
    path.findElement(By.linkText(path_name[i])).click();  
 }
}
}

逐个打开定义的链接数量。这个类与我的主测试分开。要调用类Path,我使用页面对象(页面工厂)。 这是我主要测试中的代码:

Path path=  PageFactory.initElements(driver, Path.class);
path.path ( 2, new String[]{ "First", "New text"});

但我在第The value for annotation attribute FindBy.linkText must be a constant expression行收到错误@FindBy(linkText=path_name[i])。我以什么方式将我的数组声明为页面对象?或者也许有另一种方法从类Path调用方法路径? 如果删除这部分代码,则会出现desapiared错误:     @FindBy(LINKTEXT =路径名[I])     @CacheLookup 但在这种情况下,JUnit找不到数组的元素。

1 个答案:

答案 0 :(得分:0)

注释@FindBys正是您所寻找的。它返回一个列表。

如果你想要一个阵列,你可以从列表中转换或使用this answear ...