2013-04-24 60 views
3

我正在使用casperjs作爲我的應用程序的測試工具。我在這裏面臨一個奇怪的問題。無法使用casperjs找到現有元素

casper.then(function() { 
    this.click('a[href="/ui/thunder/"]') 

}) 
casper.then(function() { 

    this.test.assertUrlMatch(/ui\/thunder\/$/, 'Redirected to cloud page'); 
console.log(this.getHTML()); 
}); 

在寫這篇文章的代碼,我重定向到UI /雷鳴頁,並在控制檯日誌this.getHTML(),它讓我看到頁面的完整HTML,但一些信息仍然失蹤。

頁面加載時,會執行多個REST API調用,並將數據加載到屏幕上,但casperjs不會顯示來自服務器的數據。

例如:當頁面加載時,它會調用我在<div class="user"></div>標記中顯示的REST服務/認證/用戶。

所以在瀏覽器中,當我看到,它充滿這樣

<div class = "user"> 
<div class "userName">User1</div> 
<div class "userName">User2</div> 
</div> 

,但是當我在casperjs爲this.getHTML()做的console.log,我得到了<div class="user"></div>(空標籤沒有任何用戶)

任何想法爲什麼會發生這種情況?

回答

1

您可能要等待的URL,在瀏覽器中實際加載:

casper.then(function() { 
    this.click('a[href="/ui/thunder/"]') 
}); 

casper.waitFor(function() { 
    return /ui\/thunder\/$/.test(this.getCurrentUrl()); 
}, function() { 
    console.log(this.getHTML()); 
}); 
0

的Casperjs的WebKit是無法做出我的網頁,因爲有這是從來沒有火狐抓到一個小型的JavaScript綁定錯誤/鉻/ IE。我下載了Konqueror,發現它也沒有渲染頁面,在修復這個綁定問題時,casperjs讓我的生活變得更加輕鬆!