2016-04-04 4 views
1

HTML:XPath работает в хромированной консоли, но не в транспортир сценарии

<div class="view doc"> 
    <div class="view-doc-heading-dec mt10 ng-binding" id="docSummaryHeader"> Document Title </div> 
    <div class="view-doc-inner mt11 ng-binding" id="docBodyHeader"> 
</div> 

Я хочу, чтобы получить 'Название документа' в указанных выше элементов с XPath:

$x('//*[@id=docSummaryHeader]')[0] 

работает в хромированной консоли

, но

element(by.xpath('//*[@id=docSummaryHeader]')) 

в транспортире не позволяет [0]

Если я использую

element(by.xpath('//*[@id=docSummaryHeader]')) 

дает несколько элементов в текущем HTML

+0

не разрешает [0] ": пожалуйста, разверните: он дает ошибку (тогда какая ошибка?) Или что-то еще? – Richard

+0

элемент (by.xpath ('// * [@ id = docSummaryHeader]')) дает ошибку: Failed: Не удается прочитать свойство «findElementOverride» неопределенного и $ x ('// * [@ id = docSummaryHeader]') в консоли хром дает несколько результатов в вышеприведенном коде как 1. Название документа, Заголовок, Тело –

+0

Эта информация должен быть в вопросе: изменить для изменения – Richard

ответ

0

Найти all elements и получить нужный номер по индексу:

element.all(by.xpath('//*[@id="docSummaryHeader"]')).get(0); 

или:

element.all(by.xpath('//*[@id="docSummaryHeader"]')).first(); 

Или, вы можете использовать XPath-индексирование (1-основе):

element(by.xpath('//*[@id="docSummaryHeader"][1]')) 
+0

Большое спасибо г-ну Ричарду, Киту и алеке за вашу помощь. element.all (by.xpath ('// * [@ ид = "docSummaryHeader"]')) получаем (0). Отлично работает для меня ... –

0

На самом деле вам не нужно здесь: XPath

$$('#docSummaryHeader').first(); 

Рассмотрим с помощью селектора CSS вместо этого.

+0

Я попробовал element.all (by.css ('[$$ (' docSummaryHeader ')]')). First(), однако, он не с ошибкой синтаксиса сообщения ошибки с отсутствующим) после списка аргументов , и с element.all (by.css ('[$$ (docSummaryHeader)]')). first() недействительный селектор. element.all (by.css ($$ ('docSummaryHeader'))). выдает максимальный размер стека вызовов. –

+0

@SandeepLohar нет нет нет, это намного проще. Просто 'var firstHeader = $$ ('# docSummaryHeader'). First(); ' element.all (by.css ...) не требуется. $$ - равнозначно элементу.all (by.css ('')); Проверьте это - http://www.protractortest.org/#/api?view=build$$ – Xotabu4

+0

Спасибо Xotabu4, ошибки, исправленные этой инструкцией, однако она возвращает результат, отличный от ожидаемого. любыми способами. xpath работает сейчас. –

Смежные вопросы