一尘不染

Selenium WebDriver-使用cssSelector和第n个子元素查找元素

selenium

<ul>
<li class="active">
    <a href="#">
    <i class="fa fa-home"></i><br>
    <span class="title">Home</span>
    </a>
</li>

<li>
    <a href="#">
    <i class="fa fa-rss-square"></i><br>
    <span class="title">Posts</span>
    </a>
</li>

<li>
    <a href="#">
    <i class="fa fa-calendar"></i><br>
    <span class="title">Events</span>
    </a>
</li>

<li>
    <a href="#">
    <i class="fa fa-bar-chart-o"></i><br>
    <span class="title">My Activity</span>
    </a>
</li>

<li>
    <a href="#">
    <i class="fa fa-edit"></i><br>
    <span class="title">Assessments</span>
    </a>
</li>
</ul>

我想找到相应的span元素。我想使用css选择器检查span元素的顺序。因此,当我使用Selenium
IDE时,我将按照以下方式进行验证(使用第n个子概念)。

verifyText | css = .title:nth(0)| 首页
verifyText | css = .title:nth(1)| 帖子
verifyText | css = .title:nth(2)| 事件
verifyText | css = .title:nth(3)| 我的活动
verifyText | css = .title:nth(4)| 评估

但是,当我在Selenium WebDriver中执行相同的操作时,无法按照我使用Selenium IDE进行的顺序来定位元素。

以下是我在WebDriver中使用的代码,它可以正常工作。

driver.findElement(By.cssSelector(".title:nth(0)")); // to locate the "Home" element

driver.findElement(By.cssSelector(".title:nth-of-type(0)")); // to locate the "Home" element

driver.findElement(By.cssSelector(".title:nth-child(0)")); // to locate the "Home" element

谁能帮我。


阅读 521

收藏
2020-06-26

共1个答案

一尘不染

您可以从生成CSS选择器ul一样ul > li:nth-child(1)回家。见下文:

driver.findElement(By.cssSelector("ul > li:nth-child(1)")); >> home
driver.findElement(By.cssSelector("ul > li:nth-child(2)")); >> posts
driver.findElement(By.cssSelector("ul > li:nth-child(3)")); >> events

到达范围也相同:

driver.findElement(By.cssSelector("ul > li:nth-child(1) > a > span")); >> home
2020-06-26