Java 如何使用SeleniumWebDriver从以下div获取文本
我试图获取以下2个div元素中的项的文本内容,但得到一个错误,即找不到该元素。例如,第一个div的文本内容是“Text1”。我怎样才能得到那条短信 到目前为止,我已经尝试:Java 如何使用SeleniumWebDriver从以下div获取文本,java,selenium,selenium-webdriver,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
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>
文本1
Text2在下一行
以下是错误,我得到:
线程“main”org.openqa.selenium.NoSuchElementException中的异常:
找不到元素:
{“方法”:“xpath”,“选择器”:“/*[@id='ctrlNotesWindow']/div[3]/ul/div[1]/div[2]/div[2]”
不要使用无意义的XPath。您的错误消息告诉您“NoTouchElement”,因此您的定位器错误,这与getText无关(还没有)。尝试使用CssSelector或有意义的XPath:
driver.findElement(By.cssSelector("#ctrlNotesWindow .notesData > .notesDate")).getText();
如果出于任何原因,您希望坚持使用Xpath:
driver.findElement(By.xpath("//div[@class='notesData']/div[@class='notesDate']")).getText();
否则,上面的css选择器答案是一个不错的选择
另一种方法是按类名定位元素:
driver.findElement(By.className("notesDate")).getText();
它与:
driver.findElement(By.xpath("//div[@class='ui-pnotify-text']")).getText();
这是一个通知。谢谢。我已经用上述预期结果澄清了我的问题。感谢您的帮助。什么是“ctrlnoteswindow”??。。它在html代码中不存在。@BasK:它是CSS选择器,用于定位id为
ctrlnoteswindow
的元素。