2013-08-25 121 views
12

我正在用selenium webdriver編寫一個python腳本來從網站獲取一些數據,並且 我試圖點擊this網頁中的下一個按鈕。當按鈕被定義爲:Python Selenium with Phantomjs - 點擊失敗:ReferenceError:找不到變量

<a id="ctl00_FullRegion_npsGridView_lnkNext" class="nextCol" href="javascript:__doPostBack('ctl00$FullRegion$npsGridView$lnkNext','')">Next</a> 

王氏下面的代碼在python

URL='http://www.nordpoolspot.com/Market-data1/Elspot/Area-Prices/ALL1/Hourly/' 
nextId="ctl00_FullRegion_npsGridView_lnkNext" 
browser=webdriver.PhantomJS('./phantomjs') 
browser.get(URL) 
nextBtn=browser.find_element_by_id(nextId) 
time.sleep(5) 
nextBtn.click() 

使用Firefox或Chrome的webdriver時,這工作得很好,但與Phantomjs我碰到下面的錯誤。

selenium.common.exceptions.WebDriverException: Message: u'Error Message => \'Click   
failed: ReferenceError: Can\'t find variable: __doPostBack\'\n caused by Request 

這個錯誤在谷歌搜索了很多大作,但havnt真正發現使用phantomjs時的方式解決它。

+0

從這[SO問題](http://stackoverflow.com/questions/16863773/python-selenium-javascript-link-click-fails-執行)。嘗試調用「提交」方法,讓我知道? – Rohit

+0

已經試過了。謝謝。提交沒有給出錯誤,但留下整個html表空白。 –

回答

32

嘗試發送一個不同的用戶代理報頭:

from selenium.webdriver.common.desired_capabilities import DesiredCapabilities 

user_agent = (
    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) " + 
    "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.57 Safari/537.36" 
) 

dcap = dict(DesiredCapabilities.PHANTOMJS) 
dcap["phantomjs.page.settings.userAgent"] = user_agent 

browser = webdriver.PhantomJS(desired_capabilities=dcap) 
+0

謝謝!它的工作就像一個魅力:) –

+0

謝謝你,在這幾天工作... – Illidan

相關問題