2016-06-01 5 views
1

が一致するテキストを見つけるために、このコードを使用しています、私はあなたがロケーターに一致するすべての要素を見つけるために、XPathでfindElementsを使用することができます重複レコード selenium webdriverを使用してウェブページ/テーブルに重複するテキスト/レコードを見つける方法は?

WebElement body = driver.findElement(By.tagName("body")); 
String bodyText = body.getText(); 

// count occurrences of the string 
int count = 0; 

// search for the String within the text 
while (bodyText.contains("VIM LIQUID MARATHI")){ 

// when match is found, increment the count 
count++; 

// continue searching from where you left off 
bodyText = bodyText.substring(bodyText.indexOf("VIM LIQUID MARATHI") + "VIM LIQUID MARATHI".length()); 

}

+0

これは私にとって明確であるが、私のqyuestoinは今、ウェブページへのIAM演出で、それはテキストのn個の番号が含まれ、どのように私は、そのページで言う,,,, Webページが重複したテキストが含まれていることを見つけることができますテキスト(ゼブラ)の表示/一覧表示2回、シマウマが重複しているのを見つけてください。上記のシナリオのスクリプトが欲しいです。 –

答えて

0

を見つけたいです。これにより、サイズを取得できるリストが返されます。これが自動的に重複カウントになります。

String textToFindDuplicatesOf = "VIM LIQUID MARATHI"; 
List<WebElement> elements = driver.findElements(By.xpath("//*[text() = '" + textToFindDuplicatesOf + "']")) 
int count = elements.size(); 

今すぐif(count > 1)は、重複したレコードがあることを意味します。

は今、あなただけのメソッドに追加し、これは他のテキストのために再使用する場合:

public boolean isDuplicateFound(String textToFindDuplicatesOf) { 

    List<WebElement> elements = driver.findElements(By.xpath("//*[text() = '" + textToFindDuplicatesOf + "']")) 
    return elements.size() > 2; 
} 

は、ページ上のすべての重複を見つけるために、このような何かを試してみてください。 ...

List<WebElement> elements = driver.findElements(By.xpath("//*[text()]")); 
Map<String, Integer> textCounts = new HashMap<>(); 

for (WebElement element : elements) { 

    String text = element.getText(); 
     if (textCounts.containsKey(text)) { 

      textCounts.put(text, textCounts.get(text) + 1); 
     } else { 

     textCounts.put(text, 1); 
    } 
} 

コンソールにこれを印刷するには::私はいくつかのミスがあるかもしれません、これをテストしていない

for (Map.Entry<String, Integer> entry : textCounts.entrySet()) { 
    System.out.println(entry.getKey()+" : "+entry.getValue()); 
} 
+0

これは私にとっては明らかですが、私のqyuestoinは今はウェブページに向いています。そのWebページに重複したテキストが含まれていることを確認する,,,そのページでテキスト(Zebra)が2回表示/リストされているとすると、シマウマが重複しているように見えるはずです(上記のシナリオのスクリプトが必要です) –

+0

xpathゼブラに?私の例を見やすくするために変更しましょう。 – Mobrockers

+0

そのウェブページには何千ものテキストがありますが、重複するレコードのみを検索する必要があるのですか、個別に検索することはできませんか? –

0

これはあなたの検索テキストが含まれていWebElementのすべてのテキストを提供します:

String searchString = "VIM LIQUID MARATHI"; 
List<WebElement> elements = driver.findElements(By.xpath("//*[text() = '" + searchString + "']")); 

for(WebElement we:elements){ 
    System.out.println(we.getText()); 
} 
+0

これは私にとっては明らかですが、私のqyuestoinは今、ウェブページに誘導しています。それにはn個のテキストが含まれています。どのウェブページに重複テキストが含まれているのか、どのページでテキスト(Zebra)/2回リストされていれば、シマウマが重複しているように見えるはずです。上記のシナリオのスクリプトが必要です –

+0

これまでのところ、重複:-)を見つけることしか尋ねません。後で何をしたいですか?テキスト、画像にリンクがありますか?テキストを見つけた後に何をしたいのかを教えてください。 – Westranger

+0

ウェブページに何千ものテキストがある場合は、重複レコードだけを見つける必要がありますか、個別に検索することはできませんか? .....私はちょうど重複したレコードthatsを印刷したいと思うすべて –

関連する問題