2017-02-15 3 views
0

Я запускаю unittest на api, который вызывается с помощью менеджера тегов google, чтобы вставлять теги скрипта, которые вытаскивают файл javascript. Например, ГТМ впрыскивает следующее:Python Selenium Не выполняется Javascript от Диспетчера тегов Google

<script src="http://www.example.com/js/file.js"></script> 

В файле file.js есть Javascript, который выполняет обработку информации посетителя и отправляет его в наш API. Весь этот процесс отлично подходит для посетителей сайта, но не работает в Python Selenium, используя PhantomJS. Просмотр источника страницы, я вижу, что данные сбрасываются с gtm правильно, и запрос на file.js сделан на наши серверы, но код внутри никогда не выполняется. Может ли кто-нибудь указать, что я делаю неправильно? Ниже приводится выдержка из моего кода:

from selenium import webdriver 
driver = webdriver.PhantomJS(service_args=['--ignore-ssl-errors=true']) 
driver.set_window_size(1120, 550) 
driver.get('https://www.example.com') 
print(driver.page_source) 
cookies = {item['name']: item for item in driver.get_cookies()} 
print(cookies) 

Поскольку ГТМ нагрузок в конце страницы, может быть их потенциал, что он не выполняет соответствующий JavaScript?

+0

Вы пробовали добавить небольшую задержку, чтобы убедиться, что страница загружена полностью? например, 'time.sleep (2)' после 'driver.get (...)' и перед первой 'print' – jinksPadlock

+0

Да, я пробовал делать 10-секундную задержку и все еще получал ту же самую проблему. – user2694306

+0

Я заметил, что вы упомянули, что он работает для посетителей, но работает ли он в селене с другим веб-ретривером? Я обычно отлаживаю js таким образом, используя браузер, чтобы перейти через код, а затем переключитесь обратно на безголовую, как только все будет работать гладко. – jinksPadlock

ответ

0

Оказалось, что выполнялся javascript, но это было ошибкой, потому что я пытался получить Timezone через библиотеку Intl, которая не поддерживается в PhantomJS. Я определил, что это была ошибка со следующим: driver.get_log('browser') и рассмотрение результата.

Смежные вопросы