繁体   English   中英

如何通过XPath将HTML中的字符串提取到Java中?

[英]How to extract string from HTML by XPath into Java?

我正在用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.

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

使用xpath(假设您的路径正确,因为示例中的HTML实际上无关紧要):

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

或者如果您想使用element:

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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM