2016-02-26 71 views
0

我的casperjs腳本播放視頻,然後網頁提供2個按鈕以繼續查看或單擊「填充」。 「填充選項是什麼我之後,但在按鈕具有相同的id,除了所需的選項有acivate-access()函數:CasperJS腳本沒有找到正確的按鈕和onclick事件

button id="activate" class="btn btn lg" onclick="activate_access(); 

我試圖做this.click(‘#激活’)和this.click('#activate.btn.btn-lg'),但只是重新加載一個新的視頻,所以我想casper.evaluate或其他方法是必要的,我如何通過正確的onclick事件(這是acivate_access();)到casperjs 代碼:?

var casper = require('casper').create({ 
      logLevel: "warning", 
      verbose: true, 
      onPageInitialized: function() { 
              console.log("page opened"); 
              }, 

}); 
casper.userAgent('Mozilla/5.0 (Windows NT 6.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.109 Safari/537.36'); 
casper.viewport = {width:1200, height:800}; 
casper.start(url, function() { 

    casper.wait(1000, function() {        

        casper.capture('look.png'); 
        console.log('did screenshot'); 

    }); 


}); 

casper.wait(4000, function() { 
console.log('clicking play'); 
this.click('#video'); 
casper.wait(37000); 
casper.capture('play.png'); 

pres_url=this.getCurrentUrl();  

console.log(pres_url); 
}); 

casper.evaluate(function() { 
document.getElementById('activate').click(); 

}); 

casper.wait(500); 
casper.run(); 
+0

如果不同的元素具有相同的'id'屬性,那麼你真的應該對製作這個元素的開發者生氣。這絕不應該發生!此外,PhantomJS有一個相同的ID與多個元素相關的錯誤。 –

回答

0

你沒有進入頁面的上下文,並使用DOM API或jQuery的點擊這個元素CasperJS」 click(selector)是完全卡帕用適當的選擇器處理這個問題。

CSS選擇器支持基於屬性的匹配元素。您可以使用

casper.click("button[onclick='activate_access();']"); 

一個完美的匹配,甚至

casper.click("button[onclick*='activate_access']"); 

爲部分匹配。