2017-03-04 7 views
1

JUnit Seleniumの新機能です。問題が見つかりました。 @Testメソッドでロケータを使用している要素が見つかりません。私がdriver.と入力すると予知的な検索はありません@Beforeに入力すればできます。@Testのロケータを使用できませんJunit Seleniumウェブドライバ

例えばIカントタイプ

@Test 
.. 
driver.findElement(By.id("gs_htif0")).sendKeys("blabla"); 

私のクラスには含まれています -

あなたは内のローカル

WebDriver driver; 

を宣言したためだ

@Before 
public void setUp() throws Exception { 

    WebDriver driver; 
    System.setProperty("webdriver.gecko.driver", "C:\\geckodriver.exe"); 
    driver = new FirefoxDriver(); 

String baseURL = "https://www.google.com"; 
driver.get(baseURL); 
} 

@Test 
public void test() { 
driver.**___PROBLEM___**  

} 

@After 
public void tearDown() throws Exception { 
} 

[eclipse - problem]

+0

。 – JeffC

答えて

2

をあなたのケースでは@Beforeを使って注釈を付けたsetUpメソッド。


あなたはクラスレベルにこれを移動して、さらに使用しなければならない - あなたはそれがエラーメッセージが表示されます赤でマークされているdriver` `上にカーソルを移動した場合

public class SomeTest { 

    WebDriver driver; 

    @Before 
    public void setUp() throws Exception { 
     ... 
     driver = new FirefoxDriver(); 
     ... 
     driver.get(baseURL); 
    } 

    @Test 
    public void test() { 
     driver.getTitle(); //just an example 
    } 

    .... // other methods 

} 
+0

ありがとうございます。私はWebDriverドライバを移動すると動作します。パブリッククラスに変換する。 System.setProperty( "webdriver.gecko.driver"、 "C:\\ geckodriver.exe")も入れないのはなぜですか? WebDriverドライバの下に、例えば public class { WebDriver driver; System.setProperty( "webdriver.gecko.driver"、 "C:\\ geckodriver.exe"); } 私はプロパティをBeforeに設定している場合にのみ動作しています... – Pinky

+0

@BabyBunny 'System.setProperty(" webdriver.gecko.driver "、" C:\\ geckodriver.exe ")を置くことはできません; 'クラス内のステートメント。それがどこから呼び出されるのか想像してください(どのような参照)。それは方法にあるべきです。 – nullpointer

関連する問題