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