2017-10-16 4 views
0

問題は私が何個のアイテムを数えようとしているか(が8です)がナビゲーションにありますメニューがhttps://www.softrams.com/で、ロジックが正しく引き抜かれません。いずれか、私は間違った関数を使用しているか、私は正しくそれをコーディングしていません。私はこのコードを実行するとJavaまたはPythonを使用してナビゲーションメニューのアイテムの数を合格/不合格にする

私はこの機能のために構築されたコードは

WebElement nav_menu_count = driver.findElement(By.xpath("//ul[contains(@class,'nav navbar-nav')]")); 
    System.out.println(nav_menu_count.getSize()); 
    String nav_count = "710, 51"; 
    if(nav_menu_count.equals(nav_count)) 
    System.out.println("Menu count is correct"); 
    else 
     System.out.println("Menu count is incorrect"); 

私のコンソール出力です:

(710、51)メニュー数は

正しくありません。
+0

使用driver.findElements(複数形)に還元し、一覧に格納されています。代わりにsize()を使用してください。 getSize()は、最初のメニューの左上隅を取得します。 – Grasshopper

+1

'equals()'を使って 'WebElement'が' String'と等しいかどうかをテストすることはできません。それはスイカとリンゴを比較しています。 – Kayaman

答えて

0

現在、メニューバーを選択しており、単一のWebElementのgetSize()はを返します。、メニュー項目の数ではありません。

//ul[contains(@class,'nav navbar-nav')]/li/a 

そのXPathを持つ、誰かがコメントで提案のように、すべての要素を選択し、それらのアイテムの数を取得:

メニュー項目は、次のXPathを持って

List<WebElement> allMenuItems = driver.findElements(
       By.xpath("//ul[contains(@class,'nav navbar-nav')]/li/a")); 
int count = allMenuItems.size(); // should return 8 
0

いくつかの問題があります。解決する必要がある:

  1. あなたのロケータはを返す予定ですこれはメニュー項目の数ではなくメニューの数で、1です(注:ULは順序リストではなく、LIはリスト項目です)。あなたが配置したULに含まれるLIの数が必要です。

  2. あなたは.findElement()を使用しています。これは単一の要素を返すか、要素が見つからない場合に例外をスローします。 .findElements()(複数の場合は、になります)を返し、返されたコレクションのアイテム数を数えます。

  3. あなたはカウントをaと比較していますか?文字列 "710,51"?私はそれが何をすべきかわからない。あなたが代わりにしたいint、8

  4. nav_menu_count.equals(nav_count)は動作しませんStringからWebElementを比較しています。

  5. 独自の検証ライブラリを作成しないでください。 JUnitまたはTestNG for Javaを調べて、Pythonの場合はそれに相当するものを調べてください。あなたの人生を楽にします。

今すべてそのコードが代わり

List<WebElement> menus = driver.findElements(By.cssSelector("ul.nav > li")); 
Assert.assertEquals(menus.size(), 8); 
関連する問題