Python Selenium 4 - Firefox installAddon не работает - PullRequest
0 голосов
/ 12 октября 2019

Я обновился до селена 4

new_addon_path = 'D:/GOOD/Coding/uBlock.xpi'
browser1 = selenium.webdriver.Firefox(options=opts, etc....)
browser1.install_addon(new_addon_path)

Ошибка:

selenium.common.exceptions.WebDriverException: Message: Expected absolute path: [Exception... "Component returned failure code: 0x80520001 (NS_ERROR_FILE_UNRECOGNIZED_PATH) ..... 

Документация:

https://github.com/SeleniumHQ/selenium/blob/master/javascript/node/selenium-webdriver/CHANGES.md

Документация гласит:

Изменения в firefox.Driver .. Добавлена ​​установка Addon (путь)

A временный профиль автоматически создается в C:/Users/User/AppData/Local/Temp/ Мне нужен этот временный профиль, чтобы я мог обрабатывать несколько сеансов драйверов одновременно, не создавая и не назначая новые профили вручную.

Этот временный профиль можно найти с помощью browser1.__dict__['capabilities']['moz:profile']

Исправления, которые я попробовал:

попытался поместить uBlock.xpi в папку профиля, затем позвонил browser1.install_addon(path to profile/extensions/uBlock.xpi)

попытался поместить uBlock.xpi в ту же папкукак geckodriver.log

Все пути терпят неудачу, независимо от того, являются ли они относительными или апсолютными путями.

Документация также гласит:

Измененияto firefox.Options .. Добавлены addExtensions

, который даже не существует в качестве опции в firefox.Options

Ответы [ 2 ]

0 голосов
/ 14 октября 2019

Ребята на github.com решили проблему,

browser1.install_addon('D:/GOOD/Coding/uBlock.xpi')

должно выглядеть так:

browser1.install_addon(r'D:\GOOD\Coding\uBlock.xpi')

Это работает

Я не уверен, почему, поскольку функция service() или любая другая функция python selenium прекрасно работает на windows с черными чертами. Этот путь, однако, требует этой формулы.

0 голосов
/ 12 октября 2019

Message: Expected absolute path

Это сообщение об ошибке сообщает вам точную проблему.

install_addon() требует абсолютный путь , но выпередавая ему относительный путь .

Решение состоит в том, чтобы использовать абсолютный путь.

Документация гласит

Документациявы указали для привязок JavaScript, но ваш код использует привязки Python. Вы читаете не ту документацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...