2015-11-10 63 views
5

我似乎無法找到正確的語法來遍歷Nightwatch中的nodelist的innerHTML。我試圖返回包含在頁面正文內容中的每個「a」標籤的url,但是我找不到在Nightwatch中訪問我的querySelectorAll命令結果的方法。如何遍歷查詢選擇器所有結果在Nightwatch

browser.execute(function() { 
    return document.querySelectorAll("div.field-item.even a"); 
}, 
function(tags){ 
    console.log(tags.value); 
    console.log(tags.value[9]); 
}) 

我正在測試的頁面上有10個鏈接。查詢選擇器似乎檢索它們所有中,由於執行console.log(tags.value)打印如下:

[ { ELEMENT: '1' }, 
    { ELEMENT: '2' }, 
    { ELEMENT: '3' }, 
    { ELEMENT: '4' }, 
    { ELEMENT: '5' }, 
    { ELEMENT: '6' }, 
    { ELEMENT: '7' }, 
    { ELEMENT: '8' }, 
    { ELEMENT: '9' }, 
    { ELEMENT: '10' } ] 

和的console.log(tags.value [9])打印:

{ ELEMENT: '10' } 

但是,我找不到從這些結果中檢索鏈接的方法。將.innerHTML附加到這些變量中的任何一個會返回「未定義」。有沒有什麼辦法讓我遍歷querySelectorAll結果並在裏面檢索url?

編輯:好像如果我使用下面的代碼,我可以得到相同的結果:

browser.elements("css selector", "div.field-item.even a", function(tags) { 
    console.log(tags.value); 
    console.log(tags.value[9]); 
}) 

我原本以爲我是一個節點列表的工作,但我覺得我其實是根據documentation for the .elements command返回一個WebElement JSON對象。

但是我仍然無法訪問內部文本。有任何想法嗎?

+0

[通過與document.querySelectorAll選擇的元素如何循環]的可能的複製後(http://stackoverflow.com/questions/12330086/how-到環通選擇的元素與 - 文檔queryselectorall) – hippietrail

回答

3

我使用不同的方法解決了問題。我使用browser.elements命令而不是querySelectorAll,然後使用browser.elementIdAttribute來獲取每個'a'標籤中每個'href'屬性的內容。

//Get an WebElement JSON object array of all urls 
    browser.elements("css selector", "div.field-item.even a", function(link_array) { 
    for (var x = 0; x < link_array.value.length; x++){ 
     //Fetch the url from each 'a' tag in the content 
     browser.elementIdAttribute(link_array.value[x].ELEMENT, "href", function(links) { 
     console.log(links.value); 
     }); 
    } 
    }) 

這打印出頁面內容中的每個鏈接。

0
selectAllRoles: function (client) { 
     client.elements('css selector', '.editorDetail ul li input[type=checkbox]', function(res) { 
      res.value.forEach(elementObject => { 
       client.elementIdClick(elementObject.ELEMENT); 

      }); 
     }); 

     return this; 
    }, 

填寫您的ID的「CSS選擇器」