【问题标题】:Python Selenium Firefox: Unable to open multiple tabs when using Firefox ProfilesPython Selenium Firefox:使用 Firefox 配置文件时无法打开多个选项卡
【发布时间】:2021-04-28 19:54:48
【问题描述】:

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

系统信息:

Windows7
Python 3.7
火狐 84
硒 3.141

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

带有 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
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 +"');")

参考资料:

Open web in new tab Selenium + Python
Selenium multiple tabs at once
Python -- Opening multiple tabs using Selenium
Open multiple tabs in selenium using python
Open multiple tabs in selenium using python
Selenium Switch Tabs

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

【问题讨论】:

    标签: python python-3.x selenium geckodriver selenium-firefoxdriver


    【解决方案1】:

    删除 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
    

    【讨论】:

    • Thnx,它在删除空配置文件后工作。如果我添加一个配置文件,(我已经更新了代码)然后它返回到 suare one,选项卡将作为新窗口打开。
    • 使用 fp.DEFAULT_PREFERENCES["frozen"]["browser.link.open_newwindow"] = 3
    • 太棒了,太神奇了。我已将browser.link.open_newwindow 中的about:config 中的browser.link.open_newwindow 更改为3,但从未想过Selenium 会将配置文件复制到临时rust。感谢您指出这一点,browser.link.open_newwindow 是一个冻结首选项,这意味着它不能使用 profile.set_preference("browser.link.open_newwindow", 3) 进行修改
    猜你喜欢
    • 1970-01-01
    • 2019-08-04
    • 2011-07-13
    • 2016-12-25
    • 2017-05-24
    • 2016-06-25
    • 1970-01-01
    • 1970-01-01
    • 2013-09-17
    相关资源
    最近更新 更多