1

私はwebdriverを使用して、テキストがフォーマットされている可能性があることを除いて、魔法の定数で装飾されたリンクを探すためにWebサイトをクロールしています。

<a href="blah" ..><span blah>magic</span></a>

そして多くのレベルに

<a href="blah" ..><span blah>A <span blah><b>magic</b></span> evening</span></a>

任意のサイトを検索しているので、フォーマットされているかどうか、フォーマットされているかどうかはわかりません。

私のコードは次のようになります。

List<WebDriver> links = driver.getElements(By.tagName("a"));
   for (WebElement link : links) {
       List<WebElement> children = link.getElements(By.tagName("*"));
           for (WebElement child : children) {             
              if (myPattern.matcher(child.getText()).matches()) {
                 System.out.println("found match!");
              }
           }
    }

しかし、これは一致するものを見つけることができません。

一致するものがあるかどうかを判断する方法についてのアイデアはありますか?

4

2 に答える 2

2

XPath を使用できる場合、便利な XPath 式は次のとおりです。

//a[span[.//text()[. = 'magic']]]

これにより、文字列値が string である text-node 子孫を持つ子をa持つ XML ドキュメント内のすべてが選択されます。span"magic"

于 2012-05-07T12:21:57.687 に答える
1

jsoupを使用してテキストコンテンツを取得してみてください。そうすれば、そこからかなり簡単になります。

String html = "<a href=\"blah\"><span blah>...<b>magic</b>...</span></a>"
String string = Jsoup.parse(html).text(); //A magic evening
if(string.contains("magic")){ //you can optimize to have word match, e.g. not "magical"
    //it's a match
}

編集:

私は長い間WebDriver/Seleniumを使用していませんでしたが、同じ効果があるように見えるこのようなものを見ました

String innerText = ((JavascriptExecutor)driver).executeScript("return arguments[0].innerText", element);
于 2012-05-07T06:22:48.983 に答える