Python 3.x Selenium远程驱动程序找不到geckodriver
我正在尝试使用Selenium启动远程Firefox会话。代码如下:Python 3.x Selenium远程驱动程序找不到geckodriver,python-3.x,selenium-webdriver,selenium-grid,geckodriver,Python 3.x,Selenium Webdriver,Selenium Grid,Geckodriver,我正在尝试使用Selenium启动远程Firefox会话。代码如下: def Mozilla(): from selenium.webdriver.firefox.options import Options as Options_Mozilla sys.path.append("/opt/app/venv/bin") ff_options = Options_Mozilla() ff_options.add_argument("--headless")
def Mozilla():
from selenium.webdriver.firefox.options import Options as Options_Mozilla
sys.path.append("/opt/app/venv/bin")
ff_options = Options_Mozilla()
ff_options.add_argument("--headless")
ff_options.set_preference("network.proxy.type", 1)
ff_options.set_preference("network.proxy.http", "some_address")
ff_options.set_preference("network.proxy.http_port", 8080)
ff_options.set_preference("network.proxy.ssl", "some_address")
ff_options.set_preference("network.proxy.ssl_port", 8080)
#profile.update_preferences()
#builtins.browser = webdriver.Firefox(firefox_profile=profile, firefox_options=ff_options)
#builtins.browser = webdriver.Firefox(firefox_options=ff_options)
builtins.browser = webdriver.Remote(command_executor="http://some_other_address/wd/hub", desired_capabilities=ff_options.to_capabilities())
执行代码时,我得到:
Traceback (most recent call last):
File "Creditview_PL.py", line 15, in <module>
DS.Mozilla()
File "/home/ad.ing.net/ji34ix/Projects/DS/DziadowskieSelenium.py", line 35, in Mozilla
builtins.browser = webdriver.Remote(command_executor="http://172.22.164.33:4444/wd/hub", desired_capabilities=ff_options.to_capabilities())
File "/opt/app/venv/lib64/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 156, in __init__
self.start_session(capabilities, browser_profile)
File "/opt/app/venv/lib64/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 251, in start_session
response = self.execute(Command.NEW_SESSION, parameters)
File "/opt/app/venv/lib64/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 320, in execute
self.error_handler.check_response(response)
File "/opt/app/venv/lib64/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: The path to the driver executable must be set by the webdriver.gecko.driver system property; for more information, see https://github.com/jgraham/wires. The latest version can be downloaded from https://github.com/jgraham/wires
一切正常!找到壁虎河一点问题都没有
我还确认带有geckodriver的文件夹位于路径中。必须这样做,否则第二个代码将无法工作。常见的互联网知识建议设置webdriver.gecko.driver系统属性,但示例代码看起来不像Python。正如您所看到的,我使用了sys.path.append,但它没有任何帮助
Some versions:
Mozilla Firefox 60.1.0
geckodriver 0.21.0
selenium==3.13.0
网格节点的配置:
java -jar /opt/Selenium_grid/selenium-server-standalone-2.49.1.jar -role node -port 5555 -maxInstances=10 -Dwebdriver="opt/app/venv/bin" &> nodelog1.txt &
那么,谁能帮我弄清楚为什么遥控器司机找不到壁虎河
当我使用这个代码(没有远程驱动程序)时,让我惊讶的是:所有
作品找到壁虎河一点问题都没有。我也确认
带有geckodriver的文件夹位于路径中。必须如此,否则
第二个代码将无法工作
您正在比较两种不同的执行模式。第二个变体基本上尝试在python测试用例开始运行的机器上打开firefox浏览器
第一个变体基本上是尝试在远程机器上打开firefox浏览器(这里我假设您的网格运行在不同的机器上)。所以这里发生的事情是,Selenium基本上告诉您它在远程机器中找不到geckodriver(具体来说是Selenium节点)
要解决此问题,您有两个选项:
PATH
变量中,杀死selenium节点,关闭终端并打开一个新的(以便新读取PATH
),然后重新启动节点java-Dwebdriver.gecko.driver=opt/app/venv/bin-jar/opt/Selenium\u grid/Selenium-server-standalone-2.49.1.jar-role node-port 5555-maxInstances=10&>nodelog1.txt&
PS:您在Selenium网格端使用的是非常旧的Selenium版本(2.49.1)。请考虑升级到最新版本(今天3.3.0)谢谢您的时间结束努力。我已经解决了这个问题。因为我只是在测试网格,所以所有的东西都是在一台机器上设置的。hub和geckodriver试图在同一个端口上侦听,因此节点无法将指令传递给驱动程序。看起来它们被发送回了集线器:)当我更改集线器的端口时,一切都开始正常工作。还感谢您指出网格的版本,它现在已经升级了。
java -jar /opt/Selenium_grid/selenium-server-standalone-2.49.1.jar -role node -port 5555 -maxInstances=10 -Dwebdriver="opt/app/venv/bin" &> nodelog1.txt &