如何使用Selenium Webdriver从以下div获取文本

时间:2013-12-04 21:39:50

标签: java selenium selenium-webdriver

我正在尝试获取以下2个div元素中的项目的文本内容,但是收到无法找到该元素的错误。例如,第一个div的文本内容是“Text1”。我怎样才能得到那个文本?

到目前为止,我已经尝试过:

driver.findElement(By.xpath("//*[@id='ctrlNotesWindow']/div[3]/ul/div[1]/div[2]/div[2]")).getText())

并且抱怨找不到那个元素。

这是html代码:

<div class="notesData">
<div class="notesDate" data-bind="text: $.format('{0} - {1}', moment(Date).format('MMM DD, YYYY h:mm a'), User)">Text1</div>
<div class="notesText" data-bind="text: Note">Text2 on next line</div>
</div>

这是错误,我得到:

  

线程“main”中的异常org.openqa.selenium.NoSuchElementException:   无法找到元素:   { “方法”: “的xpath”, “选择器”: “// * [@ id中= 'ctrlNotesWindow'] / DIV [3] / UL / DIV [1] / DIV [2] / DIV [2]”} < / p>

3 个答案:

答案 0 :(得分:8)

不要使用无意义的XPath。您的错误消息告诉您“NoSuchElement”,因此您的定位器错误,这与getText(尚未)无关。尝试使用CssSelector或有意义的XPath:

 driver.findElement(By.cssSelector("#ctrlNotesWindow .notesData > .notesDate")).getText())

答案 1 :(得分:3)

如果出于某种原因你想要坚持使用Xpath:

driver.findElement(By.xpath("//div[@class='notesData']/div[@class='notesDate']")).getText();

否则,上面的css选择器答案是一个不错的选择。

另一种方法是按类名定位元素:

driver.findElement(By.className("notesDate")).getText();

答案 2 :(得分:0)

适用于:

driver.findElement(By.xpath("//div[@class='ui-pnotify-text']")).getText();

这是一个PNotify通知。