私はJava Selenium 2.0を使用します。これは私のHTML要素です。コメントと返信のコメントが含まれています:セレン - クラス名で第1レベルの子を取得
<div class="comment-list">
<div class="comment">
<a class="content">Comment 1</a>
<div class="reply-comment">
<div class="comment">
<a class="content">Comment 1.1</a>
</div>
<div class="comment">
<a class="content">Comment 1.2</a>
</div>
</div>
</div>
<div class="comment">
<a class="content">Comment 2</a>
</div>
</div>
コメント内の内容を選択するにはどうしたらいいですか?
- Comment 1
- Comment 2
注: これは期待どおりの結果である
comment-list > comment > content
を解決:私は、次のような絶対的なCSSセレクタを使用したくありません!これは私のソリューションです:
// Mark reply comments with a class "is-reply-comment"
JavascriptExecutor js = (JavascriptExecutor) driver;
List<WebElement> replyCommentElements = driver.findElements(By.cssSelector(".reply-comment .comment"));
for (WebElement replyCommentElement : replyCommentElements) {
js.executeScript("arguments[0].className += ' is-reply-comment'", replyCommentElement);
}
// Find comments except comments were marked "is-reply-comment"
List<WebElement> parentCommentElements = driver.findElements(By.cssSelector(".comment:not(.is-reply-comment)")
アブソリュートCSSセレクタを使用してみませんか?それはこの問題を解決するだろう。 – JeffC
@PhuLuongはあなたの問題を解決しましたか? –
申し訳ありません。私は長い間stackoverflowが恋しい。私は実際には、私のhtml構造は通常変更され、それは美しい解決策ではないので、絶対的なCSSセレクタを使いたくない。私は私の解決策を見つけ、私の質問の下に書き留めました。ありがとうございました – PhuLuong