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.

https://github.com/detro/ghostdriver