Создание скриншота flash-объекта с использованием Selenium с помощью Webdriver

#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 с воспроизведением видео.