0

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 は配列の要素を見つけることができませんでした。

4

1 に答える 1

0

注釈@FindBysはあなたが探しているものです。リストを返します。

配列が必要な場合は、リストから変換するか、この回答を使用できます...

于 2012-07-22T10:45:07.603 に答える