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();
}
}
}
定義された数のリンクを 1 つずつ開きます。このクラスは、メイン テストとは別のファイルにあります。クラス 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 からメソッド パスを呼び出す別の方法があるのでしょうか? コードのこの部分を削除すると、エラーが解消されました: @FindBy(linkText=path_name[i]) @CacheLookup しかし、この場合、JUnit は配列の要素を見つけることができませんでした。