【问题标题】:How to extract text from td node using Selenium and Java如何使用 Selenium 和 Java 从 td 节点中提取文本
【发布时间】:2021-12-29 09:31:14
【问题描述】:

我需要使用 selenium 获取 td 元素的文本。我在提取文本时遇到问题,我只收到空值。我试过用过的列表,getText() 等等。 HTML 代码在图片上,元素看起来就像您在图片上看到的一样。

getDriver().findElement(By.xpath("//*[@id=\"standortTable\"]/tbody/tr/td[2]")).isDisplayed();
String test = getDriver().findElement(By.xpath("//*[@id=\"standortTable\"]/tbody/tr/td[2]")).getText();
System.out.println(test);

但我收到 NULL,只是“”。

【问题讨论】:

  • 如果您在开发人员工具中右键单击 td 元素并转到复制 -> 复制 XPath 是否与上述代码中的路径相同?
  • 尝试使用此 xpath 一次 - //table[@id='standorteTable']/tbody/tr[1]/td[2]
  • UI 的屏幕截图很棒,代码或 HTML 的屏幕截图则不然。请阅读为什么a screenshot of code/HTML is a bad idea。粘贴代码/HTML 并正确格式化。
  • 您确定您发布的 HTML 与屏幕截图中 DOM 中的位置匹配吗? HTML 显示了一个表格,而图片的 Standort 部分看起来不像表格。我也没有看到应该在字段中的“Teststandor1”值旁边的字段标签“Standortname”。到页面的链接在这里会很有帮助。

标签: java selenium selenium-webdriver xpath css-selectors


【解决方案1】:

我猜你错过了等待,即您试图在元素文本内容完全呈现之前读取它。
试试这个:

WebDriverWait wait = new WebDriverWait(getDriver(), 30);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//table[@id='standortTable']//td[@aria-colindex='2']")));
String test = getDriver().findElement(By.xpath("//table[@id='standortTable']//td[@aria-colindex='2']")).getText();
System.out.println(test);

【讨论】:

    【解决方案2】:

    该元素是一个Angular 元素,因此要提取文本Teststandort1,您必须将WebDriverWait 诱导为visibilityOfElementLocated(),您可以使用其中任何一个以下Locator Strategies:

    • 使用 xpath 和 getText():

      System.out.println(new WebDriverWait(getDriver(), 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//table[@id='standortTable']//tbody//tr[@class='ng-star-inserted']//td[@aria-colindex='2']"))).getText());
      
    • 使用 cssSelector 和 getAttribute("innerHTML"):

      System.out.println(new WebDriverWait(getDriver(), 20).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("table#standortTable tbody tr.ng-star-inserted td[aria-colindex='2']"))).getAttribute("innerHTML"));
      

    【讨论】:

      猜你喜欢
      • 2020-11-01
      • 1970-01-01
      • 2021-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-19
      • 2020-01-01
      • 1970-01-01
      相关资源
      最近更新 更多