0

我想为一个网站创建多个窗口,所以我需要为每个窗口创建新的身份。我认为私人模式对我来说是个不错的解决方案。但是旧的方法并没有给出结果:

firefox_profile = webdriver.FirefoxProfile()
firefox_profile.set_preference("browser.privatebrowsing.autostart", True)
browser = webdriver.Firefox(firefox_profile=firefox_profile)

def main():
    browser.switch_to.new_window('window')
    browser.get("https://example.com")

我在码头找不到任何信息,所以也许你可以帮忙

4

3 回答 3

1

根据Selenium 4 beta 1发行说明:

弃用驱动程序实例化中除Options和参数之外的所有参数。Service(#9125,#9128)

所以你会看到一个错误:

firefox_profile has been deprecated, please pass in an Options object

您必须使用 的实例Options来传递 FirefoxProfile 首选项,如下所示:

from selenium import webdriver
from selenium.webdriver import Firefox
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.chrome.service import Service

def main():
  firefox_options = Options()
  firefox_options.set_preference("browser.privatebrowsing.autostart", True)
  s = Service('C:\\BrowserDrivers\\geckodriver.exe')
  driver = webdriver.Firefox(service=s, options=firefox_options)
  driver.get("https://www.google.com")

if __name__== "__main__" :
  main()

浏览器快照:

FirefoxProfile_Options


参考

您可以在以下位置找到一些相关的详细讨论:

于 2021-12-01T17:12:16.847 回答
0

这应该是“新”方式:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--incognito")

service = Service(r"C:\Program Files (x86)\chromedriver.exe")
driver = webdriver.Chrome(service=service, options=chrome_options)

它应该与 Firefox 以相同的方式工作。

于 2021-12-01T17:04:15.353 回答
0

我想出了如何为 Firefox 创建私有模式:

from selenium import webdriver
from selenium.webdriver.firefox.options import Options


def main():
    firefox_options = Options()
    firefox_options.add_argument('-private')
    driver = webdriver.Firefox(options=firefox_options)
    # driver.get("https://example.com")


if __name__ == "__main__":
    main()

我已经评论了 get 以确保浏览器真正以私有模式打开。您可以在选项卡名称中看到它。

但它并没有像我预期的那样为每个新窗口提供新的身份。

于 2021-12-02T08:21:27.827 回答