2014-08-29 2 views
2

Я пытаюсь получить текст webelement через xpath. Прилагаются содержание HTML страницы, First PageПолучение текста webelement через xpath

Second Page where highlighted in Green is the text(Closed) that I needed

Я использовал следующий код,

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)" место: ""]

Когда я сокращенный поиск до

-

он работает, и я получаю весь текст в определенном ряду. Однако, когда я расширяю его для столбца, как показано в 1-м коде, я получаю сообщение об ошибке.

фрагмент кода 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> 
+0

Является ли ваш второй запрос XPath самым дальним, вы можете попасть в DOM, прежде чем испытывать ошибки? Можно ли разместить (как код) соответствующие фрагменты вашей разметки, чтобы мы могли проверить ваши запросы? – xDaevax

+0

Нет, второй запрос - тот, который работает. Если я перехожу на следующий уровень, как указано в первом запросе, он терпит неудачу. – ASANT

+0

Изображения с кодом нечитабельно. Пожалуйста, замените их на фактический текст с отступом на четыре пробела. Затем он автоматически отображается как HTML. _But_: Определите фрагмент _relevant_ HTML, не бомбардируйте нас множеством разметки. –

ответ

0

Просто тестировал с следующими результатами: в вставленного закрытия 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')]")) .. 

во 2-й линии закрытие] отсутствует, то он должен быть:

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

Как я только использовал XPath-тестер для проверки и не имеют те же настройки вы работаете, вы должны просто дать ему попробовать. Надеюсь, это поможет.