java - 如何通过CSS选择器从元素列表中正确选择第n个元素

标签 java html css selenium

我是 Selenium 和 Java 新手,我正在尝试通过 CSS 选择器选择 nth 元素。

我想从下面的代码中获取所需的值并保存它们以供进一步使用。我已经成功使用了如下所示的 XPATH

//*[@class='search-result__advert' and not(@id)][i](i = 第 n 个元素)

我正在尝试练习通过 CSS 选择器获取值,我想出了这个(没有按预期工作)

.search-result__advert:not([id]):not([data-ad-show]):nth-child(i) (我也尝试过 :nth -of-type(i))

我对 i=3 的期望: 选择没有 id 属性和 data-ad-show 属性的第三个元素,该值将为 Desired value 3。 p>

相反,我得到org.openqa.selenium.NoSuchElementException:无法定位元素:.search-result__advert:not([id]):not([data-ad-show]):nth-​​child(3 ) 对于 i=1、i=2、i=5 效果很好。

<ul class="search-result list-unstyled">

    <li class="search-result__advert">
        <div class="grid grid--rev">
            <p>Desired value 1</p>
        </div>
    </li>
    
    <li class="search-result__advert">
        <div class="grid grid--rev">
            <p>Desired value 2</p>
        </div>
    </li>      

    <li class="search-result__advert" id="signUpWrapper">
        <div id="signUpSavedSearch" class="grid">
            <p>Advertisment 1</p>
        </div>
    </li>

    <li class="search-result__advert hidden" data-ad-show="ad_list_middle">
        <div class="ad" id="ad_list_middle">
            <p>Advertisment 2</p>
        </div>
    </li>

    <li class="search-result__advert">
        <div class="grid grid--rev">
            <p>Desired value 3</p>
        </div>
    </li>

    <li class="search-result__advert">
        <div class="grid grid--rev">
            <p>etc. etc.</p>
        </div>
    </li>
</ul>

最佳答案

您可以只使用 CSS 选择器

ul.search-result div.grid--rev

这会过滤掉所有广告。现在,您可以使用代码来迭代列表,而不必依赖使用定位器进行迭代。

关于java - 如何通过CSS选择器从元素列表中正确选择第n个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67668505/

相关文章:

Java - ThreadLocal 还是并发对象池?

javascript - 如果类不是一个选项,如何在使用 jQuery 时控制(避免)嵌套 html 元素的样式?

html - 如何将 Facebook 发送对话框置于其他内容之上?

Java YUI Javascript-Compressor 错误

java - 哪个选项适合替代 Java Applet?

java - 从我的桌面连接到 Cloudera VM

html - 将段落 <p> 文本添加到 div 的内联 block 集,将 div 放到下一行

javascript - 使用 JQuery 和 Javascript 获取 json 并解析它的最简单方法?

css - 设置不同大小的按钮文本行、css、javafx

html - CSS 响应式 - 无法获得所需的对齐方式