2017-10-11 8 views
-1

テストケースが失敗し、コンソール出力で要素を見つけることができないと表示された場合に問題になるが、この要素はテストケース ページオブジェクトモデルパターンを利用しています。 クラスの要素の実行順序と関係がありますか?Selenium WebDriver Java - POM - コンソールの結果がテストケースで使用されていない要素を指している

テスト・ケース:

public class FilterResultTestCaseActiveStudentsOnly { 
public static void main(String[] args) throws InterruptedException { 

    System.out.println(" enter username "); 
    Login.userName.sendKeys(Account.loginElenaB); 
    Thread.sleep(3000); 

    System.out.println(" enter password "); 
    Login.password.sendKeys(Account.pswdElenaB); 
    Thread.sleep(3000); 

    System.out.println(" click login btn "); 
    Login.loginButton.click(); 
    Thread.sleep(3000); 

    System.out.println("click on Students page "); 
    NavBar.studentsPage.click(); 
    Thread.sleep(6000); 

    System.out.println("click on Filter Results Dropdown "); 
    FiltersResultDropdown.clickOnFilterResultsDropdown.click(); 
    Thread.sleep(3000); 

    System.out.println("select Active Students only radiobutton "); 
    FiltersResultDropdown.activeStudentsOnlyFilterResultsDropdown.click(); 
    Thread.sleep(3000); 

    System.out.println("click on Apply Filters Results Dropdown "); 
    FiltersResultDropdown.applyFilterButtonFilterResultsDropdown.click(); 
    Thread.sleep(3000); 

    StudentsPage.studentLinkClickStudentsPage.click(); 
    Thread.sleep(3000); 


    String activeStudentsOnlyText = GetTextForAsserts.getStatusActiveText.getText(); 

    try{ 
     Assert.assertEquals("STATUS: Active", activeStudentsOnlyText); 
     System.out.println("The student is active"); 
    } catch(AssertionError e){ //What if there are not students filtered? ToDo! 
     System.out.println("The student not found"); 
     ; 
     throw e; 
    } 

の場合は主張する、私は必要な要素を設置するクラスを作成しました: クラス:だから

public class GetTextForAsserts { 

    WebDriverSettings driver; 

    public static WebElement getLetterOneText = WebDriverSettings.driver.findElement(By.xpath("//*[@id=\"studentLetters\"]/tr[5]/td[4]")); 

    public static WebElement getChronicLetterText = WebDriverSettings.driver.findElement(By.xpath("//*[@id=\"studentLetters\"]/tr[4]/td[4]")); 

    public static WebElement getStatusActiveText = WebDriverSettings.driver.findElement(By.xpath("//*[@id=\"studentOverview\"]/div[1]/div/div[4]/div[1]")); etc. 

} 

、それが何をするか - テストケースをコンソールがgetLetterOneTextを見つけることができないとか(または何か別の要素)、テストケースでも使用されていないとコンソールに伝えます。 すべての要素のXpathが正しい(「配置されていない」ものであっても)、複数回ダブルチェックされます。 テストケースに失敗しないようにするには、私が指摘している 'unlocated'要素をコメントアウトする必要がありますが、解決策ではありません。

答えて

0

GetTextForAssertsクラスは、getLetterOneTextを含む3つの要素すべてのページをスクレイプします。したがって、そのクラスをインスタンス化すると、そのページが使用されているかどうかにかかわらず、そのページがスクラップされます。

より良い方法は、要素を格納する代わりに、変数にロケータ、Byクラスを格納させることです。こうすることで、必要なときにロケータを使用してページをスクラップするメソッドを呼び出すことができます。

このような標準的な方法については、ページオブジェクトモデルチュートリアルとリファレンスを参照してください。また、あなた自身のプログラムをデバッグする方法を学ぶ時間を費やす必要があります。コードをステップ実行すれば、その行が実行され、問題の内容を知ることができます。

関連する問題