我想得到文本(现在是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;
答案 0 :(得分:2)
要获取第二个div块的文本nth-child应该可以工作。我在chrome工具中本地测试了选择器:
所以在你的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以了解更多信息。