2014-12-24 64 views
0

我有一個網頁有幾個tr s和每個tr有幾個td s。該結構看起來像圖所示用CasperJS導航DOM

<tr bgcolor="#FFFFFF"> 
<td class="td1" style="text-align:left">TGHD03WYD15UGS</td> 

<td class="td1" style="text-align:left"> 
    <font style="font-weight:bold"> TicketType</font> 
    :The Grand Hotel, New Delhi, 
    <font style="font-weight:bold"> FirstName</font> 
    :Sanjali, 
    <font style="font-weight:bold"> LastName</font> 
    :Garg 
</td> 

我能夠使用

this.getElementsInfo('selector'); 

得到的tr是清單當我遍歷列表我得到了tr秒,但td小號只能以html格式顯示。我想要的是可以使用屬性訪問的td對象。從最後的td中獲取內置對象的情況下,同樣適用。

如果我可以在真實的javascript場景中瀏覽DOM,我將能夠獲取所有對象,並能夠訪問它們中的屬性。

到目前爲止,它看起來不可能在CasperJS中。我所有的html屬性都給了我一個該元素的字符串表示,而不是給我這個對象本身。我想導航到像真正的JavaScript元素的孩子。

這可能嗎?

回答

0

您可以使用casper.evaluate或變體來瀏覽DOM。它執行在沙盒頁面上下文中作爲回調給出的JavaScript。你不能傳遞像DOM節點這樣的複雜對象。該docs說:

注:參數和返回值的評估函數必須是一個簡單的原始對象。經驗法則:如果它可以通過JSON序列化,那麼它很好。

閉包,功能,DOM節點等將不是工作!

進一步閱讀:

Understanding the evaluate function in CasperJS
Why doesn't this.evaluate return DOM nodes correctly?
Iterating over a grid with CasperJS