0
我已经构建了一个python脚本,它使用Selenium和Firefox来加载一些网站并处理它们的内容。因为我想在PHP中使用该脚本的输出,所以我使用PHP的exec()函数。通过PHP执行Selenium webdriver exec()
我的Python测试脚本是这样的:
from pyvirtualdisplay import Display
from selenium import webdriver
import sys
display = Display(visible=0, size=(800, 600))
display.start()
driver = webdriver.Firefox()
print("Driver started")
driver.quit()
display.stop()
当在命令行中运行它,我得到了预期的“驱动程序开始”输出。
然而,PHP这样的脚本中运行时:
exec("python test.py 2>&1", $output);
的Python脚本会产生以下错误:
Traceback (most recent call last):
File "test.py", line 8, in
driver = webdriver.Firefox()
File "/usr/lib/python2.6/site-packages/selenium-3.4.3-py2.6.egg/selenium/webdriver/firefox/webdriver.py", line 152, in __init__
keep_alive=True)
File "/usr/lib/python2.6/site-packages/selenium-3.4.3-py2.6.egg/selenium/webdriver/remote/webdriver.py", line 98, in __init__
self.start_session(desired_capabilities, browser_profile)
File "/usr/lib/python2.6/site-packages/selenium-3.4.3-py2.6.egg/selenium/webdriver/remote/webdriver.py", line 188, in start_session
response = self.execute(Command.NEW_SESSION, parameters)
File "/usr/lib/python2.6/site-packages/selenium-3.4.3-py2.6.egg/selenium/webdriver/remote/webdriver.py", line 256, in execute
self.error_handler.check_response(response)
File "/usr/lib/python2.6/site-packages/selenium-3.4.3-py2.6.egg/selenium/webdriver/remote/errorhandler.py", line 194, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: Unable to find a matching set of capabilities
我应该还提到,在命令行中我试图运行上脚本既作为根和另一个用户,都工作。网络服务器正在使用“nginx”用户执行它,我不能在命令行中使用它,导致它被网络服务器占用。但我认为,就像我的测试用户一样,nginx用户也应该拥有所有必要的权限来运行脚本。
版Firefox:Mozilla Firefox浏览器52.1.0
硒版本:3.4.3
Geckodriver版本:0.16.1