Снятие скриншота флеш-объекта с помощью Selenium с Webdriver - PullRequest
6 голосов
/ 04 октября 2011

Когда я делаю скриншот с помощью 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()

Ответы [ 2 ]

4 голосов
/ 27 октября 2011

Чтобы это работало, мне пришлось использовать атрибут wmode = transparent. Но очевидно, что это будет зависеть от того, сможете ли вы отредактировать источник веб-страницы, которую вы пытаетесь сделать снимком экрана.

Чтобы редактировать существующую HTML-страницу, добавьте параметры WMODE в HTML-код.

Добавьте следующий параметр в тег OBJECT:

 <param name="wmode" value="transparent">

Ура, нс

3 голосов
/ 30 октября 2011

Я исправляю проблему, следуя советам нерушителя.Я делал скриншоты внешних страниц, поэтому мне пришлось изменить wmode на «прозрачный» во время выполнения.Поэтому мне нужно было изменить все EMBED и OBJECT, используя 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, он должен работать практически во всех случаях с флэш-памятью.Я только сделал несколько тестов, но я могу, по крайней мере, убедиться, что он работает при создании снимков экрана страниц YouTube с воспроизведением видео.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...