[英]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.