Коллеги, добрый день!
Есть вопрос, есть приложение которое необходимо мониторить. Написал скрипт на 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
Еще не все версии селениума и браузеров совместимы, вот такая комбинация работает:
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)
ситуация не поменялась) все тоже самое