#flash #selenium #webdriver
#flash #селен #webdriver
Вопрос:
Когда я делаю снимок экрана с помощью Selenium Firefox Webdriver (да, в Firefox есть плагин flash), он не показывает объект flash. Вместо этого он показывает просто белое поле. Есть ли что-то, что я должен сделать / установить?
Я использую этот код:
from selenium import webdriver
def webshot(url, filename):
browser = webdriver.Firefox()
browser.get(url)
browser.save_screenshot(filename)
browser.quit()
Ответ №1:
Чтобы заставить это работать, мне пришлось использовать атрибут wmode=transparent . Но, очевидно, это будет зависеть от того, можете ли вы отредактировать источник веб-страницы, которую вы пытаетесь сделать скриншот.
Чтобы отредактировать существующую HTML-страницу, добавьте параметры WMODE в HTML-код.
Добавьте следующий параметр в тег объекта:
<param name="wmode" value="transparent">
Приветствия,
ns
Ответ №2:
Я исправляю проблему, следуя совету nonshatter. Я делал скриншоты внешних страниц, поэтому мне пришлось изменить wmode на «прозрачный» во время выполнения. Поэтому мне нужно было изменить все встраивания и ОБЪЕКТЫ с помощью javascript. Я нашел этот хороший скрипт: http://www.onlineaspect.com/2009/08/13/javascript_to_fix_wmode_parameters /
Итак, я просто создал скрипт для его выполнения и загрузил в «mysite.com/myscript.js » а теперь рабочий сценарий здесь:
from selenium import webdriver
script = '''
var s = document.createElement('script');
s.src = 'http://mysite.com/myscript.js';
document.body.appendChild(s);
'''
def webshot(url, filename):
browser = webdriver.Firefox()
browser.get(url)
browser.execute_script(script)
browser.save_screenshot(filename)
browser.quit()
Насколько я могу судить по сканированию javascript, он должен работать практически для любого случая flash. Я провел всего несколько тестов, но я могу, по крайней мере, убедиться, что это работает при создании скриншотов страниц YouTube с воспроизведением видео.