簡體   English   中英

通過xpath獲取Webelement的文本

[英]Getting the text of a webelement through xpath

我正在嘗試通過xpath獲取webelement的文本。 附件是頁面的html內容, 第一頁

我需要的文本(已關閉)以綠色突出顯示的第二頁

我使用了以下代碼,

String v = driver.findElement(By.xpath("//div[1]/div[contains(@class, 'ng-scope ngRow')]//div[contains(@class, 'ngCell ng-scope col7 colt7')//"
                + "div[contains(@class, 'ngCellText ng-scope ngCellElement col7 colt7')]")).getText();

這將引發錯誤“表達式不是合法表達式。”代碼:“ 12” nsresult:“ 0x805b0033(SyntaxError)”位置:“”]'。

當我縮小搜索范圍直到

String v = driver.findElement(By.xpath("//div[1]/div[contains(@class, 'ng-scope ngRow')]")).getText();

它的工作原理,我得到特定行中的所有文本。 但是,當我將其擴展到第一個代碼中所示的特定列時,出現錯誤。

html片段,

<div class="ng-scope ngRow even" ng-row="" ng-class="row.alternatingRowClass()" ng-click="row.toggleSelected($event)" ng-repeat="row in renderedRows" ng-style="rowStyle(row)" style="top: 0px; height: 30px;">
<div class="ngCell ng-scope pinned col0 colt0" ng-class="col.colIndex()" ng-repeat="col in renderedColumns" ng-style="{ 'cursor': row.cursor }" ng-dblclick="loadInstance(row.getProperty('incident_number'), 'ticket')" style="cursor: default;">
<div class="ngCell ng-scope col7 colt7" ng-class="col.colIndex()" ng-repeat="col in renderedColumns" ng-style="{ 'cursor': row.cursor }" ng-dblclick="loadInstance(row.getProperty('incident_number'), 'ticket')" style="cursor: default;">
<div class="ng-isolate-scope" data-target="actions_menu" context-menu="">
<div ng-style="{ 'cursor': row.cursor }" style="cursor: default;">
<div class="ngVerticalBar ngVerticalBarVisible" ng-class="{ ngVerticalBarVisible: !$last }"/>
<div ng-cell="">
<div class="ngCellText ng-scope ngCellElement col7 colt7" ng-class="col.colIndex()" tabindex="0">
<span class="ng-binding" ng-cell-text="">Closed</span>
</div>
</div>
</div>
</div>
</div>

剛剛測試了以下結果:在粘貼的HTML 3中, </div>關閉。 通過對XPath的最小調整,我得到以下結果:

<div class="ngCellText ng-scope ngCellElement col7 colt7" 
 ng-class="col.colIndex()"  tabindex="0">
 <span class="ng-binding" ng-cell-text="">Closed</span>
</div>

您僅在第一個XPath中缺少一個],那么它應該可以工作:

"//div[1]/div[contains(@class, 'ng-scope ngRow')]
//div[contains(@class, 'ngCell ng-scope  col7 colt7')//"
+ "div[contains(@class, 'ngCellText ng-scope ngCellElement col7 colt7')]")) ..

在第二行中,缺少[],應該是:

"//div[1]/div[contains(@class, 'ng-scope ngRow')]
//div[contains(@class, 'ngCell ng-scope  col7 colt7')]//"

由於我只是使用XPath-Tester進行檢查,並且沒有與您正在使用的相同的設置,因此您應該嘗試一下。 希望能有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM