Selenium-клиентская библиотека Python-автоматизация в фоновом режиме
Я пытаюсь автоматизировать процесс входа в мое веб-приложение с помощью клиентской библиотеки Selenium-Python. Конечная цель-изучить клиентскую библиотеку Python Selenium. Итак, я был бы очень признателен за ответы от тех, кто находится в Selenium-Python.
у меня есть такой код:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
browser = webdriver.Firefox() # Get local session of firefox
browser.get("http://myServer/WebAccess/login.html") # Load Application page
elem = browser.find_element_by_name("LoginID") # Find the Login box
elem.send_keys("Administrator")
elem = browser.find_element_by_name("Password") # Find the Password box
elem.send_keys("Administrator" + Keys.RETURN)
это работает хорошо, но все происходит в интерфейсе. Я имею в виду, что он буквально открывает Firefox, ключи в значениях, нажимает на Submit и т. д., Как и ожидалось.
мне просто интересно, есть ли что-нибудь, что я могу сделать, чтобы все это произошло на заднем плане? Допустим, я не хочу следить за тем, что делает скрипт. Я просто хочу, чтобы это было на заднем плане. Есть ли способ достичь этого?
редактировать
скачал PyVirtualDisplay и установил его в моей windows, используя команду setup.py install
. Установлен модуль EasyProcess и Path.
теперь у меня есть пример кода, как это
from pyvirtualdisplay import Display
from selenium import webdriver
display = Display(visible=0, size=(1024, 768))
display.start()
browser = webdriver.Firefox()
browser.get('http://www.google.com')
print browser.title
browser.close()
display.stop()
Я получаю следующие ошибки при выполнении этого кода:
`Traceback (most recent call last):
File "C:Documents and SettingsuserDesktopSel.py", line 1, in <module>
from pyvirtualdisplay import Display
File "C:Python27libsite-packagespyvirtualdisplay__init__.py", line 1, in <module>
from display import Display
File "C:Python27libsite-packagespyvirtualdisplaydisplay.py", line 2, in <module>
from pyvirtualdisplay.xephyr import XephyrDisplay
File "C:Python27libsite-packagespyvirtualdisplayxephyr.py", line 8, in <module>
EasyProcess([PROGRAM, '-help'], url=URL, ubuntu_package=PACKAGE).check_installed()
File "C:Python27libsite-packageseasyprocess__init__.py", line 202, in check_installed
raise EasyProcessCheckInstalledError(self)
EasyProcessCheckInstalledError: cmd=['Xephyr', '-help']
OSError=[Error 2] The system cannot find the file specified
Program install error! `
2 ответов
Firefox (и другие графические браузеры) требуют отображения X. Вы можете использовать виртуальный с помощью PyVirtualDisplay:
from pyvirtualdisplay import Display
display = Display(visible=0, size=(1024, 768))
display.start()
browser = webdriver.Firefox()
... more selenium code ...
display.stop()
помимо PyVirtualDisplay, вам также понадобятся его зависимости xfvb и Xephyr (в debian:apt-get install -y xvfb xserver-xephyr
)
вы также можете использовать PhantomJS и Ghostdriver для запуска Selenium без браузера на основе GUI.