Python Selenium在ubuntu中设置firefox配置文件的路径

Posted

技术标签:

【中文标题】Python Selenium在ubuntu中设置firefox配置文件的路径【英文标题】:Python Selenium setting path to firefox profile in ubuntu 【发布时间】:2022-01-13 05:46:46 【问题描述】:

我已经使用 python 和 Selenium 在 Ubuntu 中设置了新创建的 Firefox 配置文件的路径。但是当我运行 python 脚本时,我遇到了这个问题

/bin/python3 /home/frixreda/Desktop/Python/testU.py
/home/frixreda/Desktop/Python/testU.py:7: DeprecationWarning: firefox_profile has been deprecated, please use an Options object
  profile = webdriver.FirefoxProfile(
/home/frixreda/Desktop/Python/testU.py:13: DeprecationWarning: capabilities and desired_capabilities have been deprecated, please pass in a Service object
  driver = webdriver.Firefox(firefox_profile=profile,
/home/frixreda/Desktop/Python/testU.py:13: DeprecationWarning: firefox_profile has been deprecated, please pass in an Options object
  driver = webdriver.Firefox(firefox_profile=profile,

这是我的 python 脚本:

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

profile = webdriver.FirefoxProfile(
       r'/home/frixreda/.mozilla/firefox/3uz1obam.default')
profile.set_preference("dom.webdriver.enabled", False)
profile.set_preference('useAutomationExtension', False)
profile.update_preferences()
desired = DesiredCapabilities.FIREFOX
driver = webdriver.Firefox(firefox_profile=profile,
                     desired_capabilities=desired)

driver.get("https://gmail.com/")

【问题讨论】:

你有所有的错误信息:DeprecationWarning: firefox_profile has been deprecated, please use an Options object。所以你应该使用Options() 而不是FirefoxProfile()。或者更确切地说是FirefoxOptions() 【参考方案1】:

Browsers 正在改变,Selenium 也改变了一些设置 - 现在旧方法已被弃用但仍然可以工作(这只是警告,而不是错误)。

但警告显示首选方法是使用Option() 而不是FirefoxProfile()

而且它不需要使用DesiredCapabilities.FIREFOX 添加

'browserName': 'firefox', 'marionette': True, 'acceptInsecureCerts': True

因为它自动在options.capabilities中拥有它

from selenium import webdriver
from selenium.webdriver.firefox.options import Options
#from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

options = Options()

#help(options)

options.add_argument('-profile')
options.add_argument('/home/frixreda/.mozilla/firefox/3uz1obam.default')

options.set_preference('dom.webdriver.enabled', False)
options.set_preference('useAutomationExtension', False)

#options.set_headless()  # deprecated
#options.headless = True # preferred

#options.set_capability(name, value)
#print("DesiredCapabilities:", DesiredCapabilities.FIREFOX)  # 'browserName': 'firefox', 'marionette': True, 'acceptInsecureCerts': True

print('accept_insecure_certs:', options.accept_insecure_certs)
print('arguments   :', options.arguments)
print('preferences :', options.preferences)
print('capabilities:', options.capabilities)
print('headless    :', options.headless)
print('profile     :', options.profile)  # `None`??? but browser uses profile
print('proxy       :', options.proxy)
print('binary      :', options.binary)
#print('binary_location:', options.binary_location)
print('log         :', options.log)

driver = webdriver.Firefox(options=options)

#driver.get("https://***.com")
driver.get("https://gmail.com")

顺便说一句:您可以使用help(options) 来查看所有带有说明的选项。

【讨论】:

dom.webdriver.enabled 被 Firefox 88 或更高版本忽略。

以上是关于Python Selenium在ubuntu中设置firefox配置文件的路径的主要内容,如果未能解决你的问题,请参考以下文章

Python Selenium 设置路径到 firefox 配置文件(ubuntu)

在 Ubuntu 和 Fedora 中设置 Python 开发环境

如何在 Selenium WebDriver 中设置浏览器宽度和高度?

在Ubuntu_meta 16.04中设置默认Python3.5的命令

Selenium:我可以在 Selenium 中设置 WebElement 的任何属性值吗?

无法在 Selenium Webdriver 中设置 cookie