2017-10-25 7 views
0

私はCucumberとSeleniumでいくつかの自動テストを書いています。現在、カレンダー・ピッカーで渡された日付を選択する関数を作成しようとしています。カレンダーに表示されている現在の年を使用して、いくつかのロジックを決定するためにポップアップする必要があります。XPathでHTMLから文字列をJavaに抽出するには?

しかし、私の人生にとっては、今年の価値をJavaに引き継ぐための正しい構文を理解することはできません。最初のdivは信頼性の高い非曖昧なタグで、私は作業する必要のあるカレンダーに移動し、ブラウザの開発コンソールで何年か(この場合は「2017」)を選択することもできますが、それをJavaに渡します。

関連HTML:

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

例外は、それが生成します:今年の抽出で

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

最新の試み

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. 
+1

htmlはxpathには関係ありません –

答えて

2

は(実際には関係ありませんexmpleでHTMLとしてあなたのパスは、OKであると仮定して):

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

xpath式の "/ text()"部分を削除してみてください。 XPathので

関連する問題