gpt4 book ai didi

java - Selenium - 按类(class)名称获得一级 child

转载 作者:行者123 更新时间:2023-12-05 05:21:21 25 4
gpt4 key购买 nike

我使用 Java Selenium 2.0。这是我的 HTML 元素,它包含评论和回复评论:

<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

注意:我不想使用绝对的 css 选择器,例如:

 comment-list > comment > content

解决了!这是我的解决方案:

// 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)")

最佳答案

您可以使用 XPath

//div[not(@class='reply-comment')]/div/a[@class='content']

但这与 CSS 选择器并没有太大区别

div.comment-list > div.comment > a.content

但 CSS 选择器比 XPath 更快,具有更好的浏览器支持,并且在浏览器之间的实现更一致。

关于java - Selenium - 按类(class)名称获得一级 child ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43018212/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com