2016-04-04 56 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] 

作品在Chrome控制檯

但是

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

量角器不允許[0]

如果我使用

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

它給出了當前的HTML多種元素

+0

不允許[0]」:請展開:是否給出錯誤(然後出現什麼錯誤?)或其他內容? – Richard

+0

element(by.xpath('// * [@ id = docSummaryHeader]'))給出錯誤:失敗:不能在chrome控制檯中讀取未定義的屬性'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

非常感謝Richard,Keith和alecxe先生的幫助。 element.all(by.xpath( '// * [@ ID = 「docSummaryHeader」]'))得到(0);完美地爲我工作... –

0

其實你並不需要的XPath這裏:

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

考慮使用CSS選擇器來代替。 「

+0

我試過element.all(by.css('[$$('docSummaryHeader')]'))。first(),但失敗,錯誤消息語法錯誤丟失) 。 (by.css('[$$(docSummaryHeader)]'))。first()無效的選擇器。 element.all(by.css($$( 'docSummaryHeader')))。給出超出最大調用堆棧大小。 –

+0

@SandeepLo​​har不,不,它簡單得多。只需 'var firstHeader = $$('#docSummaryHeader')。first(); ' element.all(by.css ...)不需要。 $$ - 與element.all(by.css(''));等價。 檢查 - http://www.protractortest.org/#/api?view=build$$ – Xotabu4

+0

謝謝Xotabu4,錯誤修正與此指令,但它返回reult以外的預期值。無論如何。 xpath正在爲現在工作。 –

相關問題