有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使用SeleniumWebDriver从以下div获取文本

我试图获取以下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>

以下是错误,我得到:

Exception in thread "main" org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"xpath","selector":"//*[@id='ctrlNotesWindow']/div[3]/ul/div[1]/div[2]/div[2]"}


共 (3) 个答案

  1. # 1 楼答案

    如果出于任何原因,您希望坚持使用Xpath:

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

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

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

    driver.findElement(By.className("notesDate")).getText();
    
  2. # 2 楼答案

    它与:

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

    这是一个通知

  3. # 3 楼答案

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

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