Selenium-Python客户端库 - 背景下自动化

6 投票
2 回答
6449 浏览
提问于 2025-04-16 22:47

我正在尝试使用Selenium-Python客户端库来自动化我的网页应用登录过程。我的最终目标是学习Selenium的Python客户端库。所以,我非常希望能得到一些对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浏览器,输入值,点击提交等等,这都是我预期的。

我只是想知道,有没有什么办法可以让这一切在后台进行?比如说,我不想监控脚本在做什么。我只希望它在后台运行。有办法实现这个吗?

编辑

我下载了PyVirtualDisplay,并使用命令setup.py install在我的Windows上安装了它。同时也安装了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 Settings\user\Desktop\Sel.py", line 1, in <module>
    from pyvirtualdisplay import Display
  File "C:\Python27\lib\site-packages\pyvirtualdisplay\__init__.py", line 1, in <module>
    from display import Display
  File "C:\Python27\lib\site-packages\pyvirtualdisplay\display.py", line 2, in <module>
    from pyvirtualdisplay.xephyr import XephyrDisplay
  File "C:\Python27\lib\site-packages\pyvirtualdisplay\xephyr.py", line 8, in <module>
    EasyProcess([PROGRAM, '-help'], url=URL, ubuntu_package=PACKAGE).check_installed()
  File "C:\Python27\lib\site-packages\easyprocess\__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 个回答

1

你还可以使用PhantomJS和Ghostdriver来运行Selenium,而不需要一个有图形界面的浏览器。

https://github.com/detro/ghostdriver

8

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 来安装)。

撰写回答