Активация flash player в selenium webdriver

Коллеги, добрый день!
Есть вопрос, есть приложение которое необходимо мониторить. Написал скрипт на python с иcпользованием selenium. На моей локальной машине все запускается нормально (запускал для отладки в pycharm, тест проходит.
При запуске на сервере без Х не работает. Валится при логине в систему (сделал скрин в момент возникновения ошибки).

Вот часть скрипта:

-- coding: utf-8 --

from pyvirtualdisplay import Display
display = Display(visible=0, size=(800, 600))
display.start()
from selenium import webdriver
from selenium.webdriver import FirefoxProfile
from selenium.webdriver.firefox.firefox_profile import FirefoxProfile
from selenium.webdriver.common.by import By
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.firefox.webdriver import WebDriver
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import NoAlertPresentException
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import unittest, time, re, logging, os
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
cap = DesiredCapabilities.FIREFOX
cap[“unexpectedAlertBehaviour”] = “accept”
profile = webdriver.FirefoxProfile()
profile.set_preference(“plugin.state.flash”, 2)
profile.set_preference(“dom.ipc.plugins.enabled.libflashplayer.so”,“true”)
##LOGIN SITE
driver = webdriver.Firefox(profile)
log_callisto = open(“log.log”, “w”)
driver.get(“http://10.168.204.72:8080/”)
try:
elemLogin = WebDriverWait (driver, 10).until(
EC.presence_of_element_located((By.ID, “login”))
)
elemLogin.send_keys(“guest”)
driver.find_element_by_id(“password”).send_keys(“Qwerty123”)
driver.find_element_by_id(“submitter”).click()
except TimeoutException:
log_callisto.write(“ERROR: Not login”)
driver.quit()

print(“ERROR: Not login”, log.tell())

time.sleep(5)
driver.switch_to.frame(‘menu’)
Прошу посоветовать как правильно включить flash player.

Используются:
Mozilla Firefox 59.0
selenium (3.11.0)
gecokdriver 0.20

Пробовал поменять браузер:

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument(“–headless”)
prefs = {“profile.default_content_setting_values.plugins”: 1,
“profile.content_settings.plugin_whitelist.adobe-flash-player”: 1,
“profile.content_settings.exceptions.plugins.,.per_resource.adobe-flash-player”: 1,
“PluginsAllowedForUrls”: “http://10.168.204.72:8080/”}
chrome_options.add_experimental_option(“prefs”, prefs)

driver = webdriver.Chrome(chrome_options=chrome_options)

Тоже самое.

Python + selenium? )

Попробуй PhantomJS:

browser = webdriver.PhantomJS(executable_path=’/tests/phantomjs’,
desired_capabilities=dict(webdriver.DesiredCapabilities.PHANTOMJS),
service_args=[’–web-security=no’, ‘–ssl-protocol=any’, ‘–ignore-ssl-errors=yes’],
service_log_path = ‘/tmp/phantomjs.log’)

ну и здесь должен лежать бинарник phantomjs: /tests/phantomjs

Для Chrome тебе надо добавить опции:

chrome_options.binary_location = ‘/usr/bin/google-chrome-stable’
chrome_options.add_argument(’–headless’)
chrome_options.add_argument(’–no-sandbox’)
chrome_options.add_argument(’–log-level=DEBUG’)

Для Firefox:

firefox_options.binary = ‘/usr/bin/firefox’
firefox_options.add_argument(’-headless’)
firefox_options.set_preference(‘dom.disable_beforeunload’, True)
firefox_options.set_preference(‘browser.tabs.warnOnClose’, False)

Еще не все версии селениума и браузеров совместимы, вот такая комбинация работает:
Google chrome Google Chrome 65.0.3325.181
ChromeDriver 2.36.540471 (9c759b81a907e70363c6312294d30b6ccccc2752)

Спасибо, Тимур. Сейчас попробую и отпишусь.

Добавил опции
firefox_options.binary = ‘/usr/bin/firefox’
firefox_options.add_argument(’-headless’)
firefox_options.set_preference(‘dom.disable_beforeunload’, True)
firefox_options.set_preference(‘browser.tabs.warnOnClose’, False)
ситуация не поменялась) все тоже самое

а если еще к тем опциям в хроме добавить

chrome_options.add_argument("–allow-outdated-plugins")

а что в логах браузера?

Коллеги, ничего не выходит) все тоже самое) логов браузера нет. Есть только логи geckodriver

Возможно это подойдет

Но Селениум не лучший инструмент для тестирования Флеша
если есть большая необходимость именно тестировать Флеш - советую посмотреть на Ranorex

Евгений, мне не надо тестировать) я хочу приспособить для мониторинга

У меня Selenide. Как включить flash:

Chrome:
Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put(“profile.default_content_setting_values.plugins”, 1);
prefs.put(“profile.content_settings.plugin_whitelist.adobe-flash-player”, 1);
prefs.put(“profile.content_settings.exceptions.plugins.,.per_resource.adobe-flash-player”, 1);
prefs.put(“PluginsAllowedForUrls”, “https://domain.com/*”);
chromeOptions.setExperimentalOption(“prefs”, prefs);

Firefox:
FirefoxProfile profile = new FirefoxProfile();
profile.setPreference(“plugin.state.flash”, 2);

Все решилось проще,напряг разработку, они подсказали как игнорироваьт даннуют ошибку

Расскажите, пожалуйста, как, если не специфично для проекта? Вдруг такая проблема возникнет у кого-нибудь еще.

Я не уверен что она вам поможет. У нас это была специфичная проверка, для старой версии продукта.