如果两个类具有相同的类名,如何引用第二个类名 - 使用selenium webdriver

时间:2016-03-23 17:11:56

标签: java css selenium classname

我想得到文本(现在是null但是将来会得到一些文本,所以现在打印null应该没问题)来自第二个" 109-top-dark-grey-block ng-binding& #34;上课。尝试tabIndex和nth-child都不起作用。 "

<div class="122-top-section-btm-half">
    <div class="108-top-grey-m12x3"></div>
    <div class="109-top-dark-grey-block ng-binding">ab ab xyz</div>
</div>

&#34; &#34;

<div class="d122-top-section-btm-half">
    <div class="108-top-grey-m12x4"></div>
    <div class="109-top-dark-grey-block ng-binding"></div>

&#34;

1 个答案:

答案 0 :(得分:2)

更新

要获取第二个div块的文本nth-child应该可以工作。我在chrome工具中本地测试了选择器:

nth-child selector working in chrome web tools

所以在你的Java中:

String elementText = driver.findElement(By.cssSelector(".d122-top-section-btm-half:nth-child(2) .ng-binding")).getText();

应该做的 - 作为CSS spec says nth-child is 1 indexed - 不是0 - 所以它是第二个孩子。

旧答案

根据您提供的HTML代码段,您可以使用CSS选择器。所以你可以这样做:

String elementText = driver.findElement(By.cssSelector(".d122-top-section-btm-half .109-top-dark-grey-block")).getText();

或者,如果您刚刚在第一个div中使用ng-binding的元素之后,那么它会更清晰:

String elementText = driver.findElement(By.cssSelector(".d122-top-section-btm-half .ng-binding")).getText();

两者都会返回元素文本 - 也许请查看CSS Selectors Guide以了解更多信息。