【问题标题】:How to extract string from HTML by XPath into Java?如何通过XPath从HTML中提取字符串到Java?
【发布时间】:2018-04-06 07:47:09
【问题描述】:

我正在用 Cucumber 和 Selenium 编写一些自动化测试。目前,我正在尝试编写一个函数来选择日历选择器中传递的日期。我需要使用日历弹出时显示的当前年份来确定一些逻辑。

但是,我终其一生都无法找出正确的语法来将当前年份的值导入 Java 以进一步使用它。第一个 div 是可靠的非歧义标签,通过它我可以导航到我需要使用的日历,我什至可以在浏览器开发控制台中以某种方式选择年份(在本例中为“2017”),但我不能将其传递给 Java。

相关 HTML:

<ib-selector class="float-rg fblock40" ng-if="!hideYearSelector" initial-label="dateYear" next-handler="nextYear()" prev-handler="prevYear()">
  <div class="calendar-month-year">
    <span class="arrow-cal-left" ng-click="prevHandler()" role="button" tabindex="0">
  </span> 2017
    <span class="arrow-cal-right" ng-click="nextHandler()" role="button" tabindex="0">
  </span>
  </div>
</ib-selector>

提取年份的最新尝试:

String currentYear = driver.findElement(By.xpath("//ib-selector[@initial-label='dateYear']/div/text()")).getAttribute("data");

它产生的异常:

org.openqa.selenium.InvalidSelectorException: invalid selector: The result of the xpath expression "//ib-selector[@initial-label='dateYear']/div/text()" is: [object Text]. It should be an element.

【问题讨论】:

  • html 与您的 xpath 无关

标签: java html selenium xpath cucumber


【解决方案1】:

尝试删除 xpath 表达式中的“/text()”部分。

【讨论】:

    【解决方案2】:

    使用 xpath (假设您的路径没问题,因为示例中的 HTML 实际上不相关):

    String text = driver.findElement(By.xpath("//ib-selector[@initial-label='dateYear']/div")).getText()
    

    或者如果你想使用元素:

    WebElement el = driver.findElement(By.xPath("//ib-selector[@initial-label='dateYear']/div"));
    String text = el.getText();
    

    这里是示例中与 HTML 相关的路径:

     String text = driver.findElement(By.cssSelector(".calendar-month-year")).getText()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-10
      • 1970-01-01
      • 1970-01-01
      • 2012-02-12
      • 1970-01-01
      • 2016-05-27
      • 2019-10-15
      • 1970-01-01
      相关资源
      最近更新 更多