Python Selenium с Phantomjs - Click Failed: ReferenceError: Не удалось найти переменную
Я пишу скрипт на Python, используя Selen Webdriver, чтобы получить некоторые данные с сайта, и я пытаюсь нажать следующую кнопку на этой веб-странице. Где кнопка определяется:
<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
Эта ошибка встречается во многих поисках Google, но Havnt действительно нашел способ исправить ее при использовании phantomjs.
1 ответ
Решение
Попробуйте отправить другой заголовок User-Agent:
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)