2016-08-02 21 views
1

我正在使用量角器來測試,並且我試圖通過標題標記訪問HTML上的元素。問題是,當我嘗試追加帶有標題標籤的元素(我需要一個更深層的元素來測試innerHTML)時,我得到「找不到使用定位符的元素:By(css selector)」錯誤。此代碼經過:by.css()找到元素,但是如果附加任何東西,找不到使用定位器錯誤拋出的元素

browser.element.all(by.css('div[data-row="1"]')).get(0).element(by.css('div[class="widget-body"]')). 
element(by.css('section[class="scrollable"]')).element(by.css('div[title="myTitle: myTitle"]')); 

但是這個代碼不:

browser.element.all(by.css('div[data-row="1"]')).get(0).element(by.css('div[class="widget-body"]')). 
element(by.css('section[class="scrollable"]')).element(by.css('div[title="myTitle: myTitle"]')). 
element(by.css('span[class="text-I-Want ng-binding"]')).getInnerHtml(); 

HTML元素:

<div title="myTitle: myTitle"> 
    <header><b class="ng-binding">myTitle</b></header> 
     <section> 
      <h3><span class="text-on-hand ng-binding">myTitle</span> 
     </section> 
</div> 

數據行/ widget-body /可滾動元素是我需要獲取的元素的父元素。我無法在網上找到任何告訴我爲什麼發生這種情況的資源。任何人都可以幫忙嗎?

+0

可以附加頁面的截圖嗎? –

回答

1

第一個代碼塊通過的原因是量角器實際上不會在這種情況下嘗試定位元素。只有當你對一個元素執行一個動作,或者要求某個屬性或屬性 - 那麼你將觸發量角器來嘗試定位該元素。

換句話說,問題在於你如何定位元素。

您構建的定位器鏈看起來不可靠,您應該調試鏈的哪個部分導致錯誤。 Put a browser.pause() or browser.debugger()並在shell中嘗試您的CSS選擇器。

由於我們沒有辦法重現您的問題,因此很難說更多。

+1

我打算將你的標記標記爲正確。關於我如何解決問題的原因太多,但基本上標題隱藏在單擊'+'符號時打開的下拉列表中。在不同的頁面上,我不必在click()中編寫代碼以使測試通過。在這個頁面上,我不得不按下+使菜單下降,然後我才能夠找到該元素。長篇小說,量角器測試不僅僅是複製和粘貼,即使它們幾乎相同也可以在一個頁面上運行。它很可能無法用於單獨的頁面。 – Jooba0352

+0

如果沒有你的幫助,我不會瀏覽量角器API來發現我可能出錯的地方。 – Jooba0352