Python Selenium Firefox:使用 Firefox 配置文件时无法打开多个选项卡

Python Selenium Firefox: Unable to open multiple tabs when using Firefox Profiles

我正在尝试在 Selenium 中的同一个浏览器 window 中打开多个选项卡。如果我使用 firefox 配置文件,我无法打开多个选项卡。选项卡在没有配置文件的情况下正常打开。我搜索了很多,但可用的答案是单独打开选项卡 windows。我所追求的是使用 Firefox 配置文件在 Firefox 中的同一 window 中的多个选项卡。

系统信息:

Windows7
Python3.7
火狐 84
硒 3.141

我已经创建了一个测试 firefox 配置文件。

使用 Firefox 配置文件的代码不起作用 - 选项卡单独打开 windows。

from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
from selenium.webdriver.firefox.firefox_profile import FirefoxProfile
from selenium.webdriver.firefox.options import Options as FirefoxOptions
from selenium.webdriver.common.keys import Keys

binary = FirefoxBinary('C:\Program Files\Mozilla Firefox\firefox.exe')
firefox_capabilities = webdriver.DesiredCapabilities.FIREFOX
firefox_capabilities['marionette'] = True
fp = webdriver.FirefoxProfile('C:\Users\john\AppData\Roaming\Mozilla\Firefox\Profiles\0kjv3jas.test')
fp.update_preferences()
first_link = "https://google.com"
second_link = "https://reddit.com"
driver = webdriver.Firefox(capabilities=firefox_capabilities, firefox_binary=binary, firefox_profile=fp, executable_path='C:\WebDriver\bin\geckodriver.exe')
driver.get(first_link)
driver.execute_script("window.open('" + second_link +"');")

没有 Firefox 配置文件的代码有效 - 正常创建选项卡

from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
from selenium.webdriver.firefox.firefox_profile import FirefoxProfile
from selenium.webdriver.firefox.options import Options as FirefoxOptions
from selenium.webdriver.common.keys import Keys

binary = FirefoxBinary('C:\Program Files\Mozilla Firefox\firefox.exe')
firefox_capabilities = webdriver.DesiredCapabilities.FIREFOX
firefox_capabilities['marionette'] = True
first_link = "https://google.com"
second_link = "https://reddit.com"
driver = webdriver.Firefox(capabilities=firefox_capabilities, firefox_binary=binary, executable_path='C:\WebDriver\bin\geckodriver.exe')
driver.get(first_link)
driver.execute_script("window.open('" + second_link +"');")

参考文献:


Selenium multiple tabs at once



Selenium Switch Tabs

https://gist.github.com/lrhache/7686903
https://www.lambdatest.com/blog/python-selenium-switch-tabs/

删除 firefox 配置文件,它工作正常,你正在调用一个空配置文件,所以你不需要它

driver = webdriver.Firefox(capabilities=firefox_capabilities, firefox_binary=binary,  options=options, executable_path='C:\WebDriver\bin\geckodriver.exe')

如果您想将它与配置文件一起使用,请使用:

firefox_capabilities = webdriver.DesiredCapabilities.FIREFOX
firefox_capabilities['marionette'] = True
fp = webdriver.FirefoxProfile()

fp.DEFAULT_PREFERENCES["frozen"]["browser.link.open_newwindow"] = 3