【发布时间】:2019-01-30 20:18:14
【问题描述】:
我已经开发了一个带有 selenium 和 firefox webdriver 的 python 脚本。在我的机器上工作正常。但如果我在另一台机器上执行相同的脚本,则会出现以下错误。
Traceback (most recent call last):
File "insurance_web_monitor.py", line 13, in <module>
driver = Firefox(executable_path='geckodriver', firefox_options=options)
File "C:\Python34\lib\site-packages\selenium\webdriver\firefox\webdriver.py",
line 167, in __init__
keep_alive=True)
File "C:\Python34\lib\site-packages\selenium\webdriver\remote\webdriver.py", l
ine 156, in __init__
self.start_session(capabilities, browser_profile)
File "C:\Python34\lib\site-packages\selenium\webdriver\remote\webdriver.py", l
ine 251, in start_session
response = self.execute(Command.NEW_SESSION, parameters)
File "C:\Python34\lib\site-packages\selenium\webdriver\remote\webdriver.py", l
ine 320, in execute
self.error_handler.check_response(response)
File "C:\Python34\lib\site-packages\selenium\webdriver\remote\errorhandler.py"
, line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.SessionNotCreatedException: Message: Unable to find a
matching set of capabilities
这是我的代码
import os
from selenium.webdriver import Firefox
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as expected
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
if __name__ == "__main__":
options = Options()
cap = DesiredCapabilities().FIREFOX
cap["marionette"] = False
options.add_argument('-headless')
driver = Firefox(executable_path='geckodriver', firefox_options=options, capabilities=cap)
wait = WebDriverWait(driver, timeout=10)
driver.get('http://www.google.com')
driver.save_screenshot(
os.path.join(os.path.dirname(os.path.realpath(__file__)), os.getcwd(), 'screenshot1.png'))
wait.until(expected.visibility_of_element_located((By.NAME, 'q'))).send_keys('headless firefox' + Keys.ENTER)
wait.until(expected.visibility_of_element_located((By.CSS_SELECTOR, '#ires a'))).click()
print(driver.page_source)
driver.quit()
我机器上的配置是,
Windows => 7 Professional 64-bit
Python => 3.4.4
Selenium => 3.14
Firefox => 61.0.2
geckodriver => 0.21.0
其他机器上的配置是,
Windows => 7 Professional 64-bit
Python => 3.4.4
Selenium => 3.14
Firefox => 61.0.2
geckodriver => 0.21.0
是的,每个配置都完全相同。虽然这看起来很愚蠢,但它不起作用,它在折磨我。 我在机器之间有什么需要考虑的吗? 提前致谢。
【问题讨论】:
-
你试过
caps['marionette'] = False -
@SmashGuy 使用错误跟踪日志更新问题。
-
@NarendraR,是的。但这会导致
selenium.common.exceptions.WebDriverException: Message: Can't load the profile. Possible firefox version mismatch错误。修改有问题的代码 -
@DebanjanB 添加了错误日志
-
当您使用
Firefox => 61.0.2时,您不能使用配置cap["marionette"] = False。保持marionette的配置为默认(true默认)。
标签: python selenium firefox selenium-webdriver geckodriver