簡體   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