Python Selenium: Все еще пытаюсь понять, как работают профили и параметры: Пытаюсь отключить всплывающий менеджер паролей Firefox

#python #selenium #selenium-webdriver #firefox #profile

Вопрос:

Я очень новичок в Python и Селене. Я работаю над сценарием, который я могу запустить, чтобы получить доступ к веб-сайту и забронировать сеанс. Что меня все еще убивает, так это всплывающий менеджер паролей Firefox. Как мне отключить всплывающее окно диспетчера паролей или вообще остановить его появление?

Если я вручную отключу диспетчер паролей, скрипт будет работать нормально, как и ожидалось.

Это изображение: введите описание изображения здесь

Однако, если я не удалю его вручную, скрипт также не удалит его, и основная часть HTML последней страницы не отображается, и я получаю эти ошибки. Похоже, это подтверждает, что команда find_element_by-xpath не может найти элемент, что логично, если HTML — код недоступен.

верните self.find_element(by=By.XPATH, значение=xpath) Файл «C:UsersxxxAppDataLocalProgramsPythonPython37libsite-packagesseleniumwebdriverremotewebdriver.py», строка 978, в файле find_element ‘значение’: значение})[‘значение’] «C:UsersxxxAppDataLocalProgramsPythonPython37libsite-packagesseleniumwebdriverremotewebdriver.py», строка 321, в поле выполнить self.error_handler.check_response(ответ) Файл «C:UsersxxxAppDataLocalProgramsPythonPython37libsite-packagesseleniumwebdriverremoteerrorhandler.py», строка 242, в check_response вызывает класс исключений(сообщение, экран, трассировка стека) selenium.common.исключения.Исключение NoSuchElementException: Сообщение: Не удается найти элемент: //ul/li[@data-index=’3′]

После некоторых исследований я добавил раздел с ключевыми строками:

 profile.set_preference("dom.disable_beforeunload", True)
driver = webdriver.Firefox(firefox_profile = profile
 

Это кажется синтаксически правильным, так как я не получаю ошибок для этих строк кода, но
сценарий имеет тот же недостаток, независимо от того, использую я эти строки или нет (прокомментируйте их). Есть идеи, что не так?

Весь код является:

 import datetime
import time
from selenium import webdriver

#Using Firefox to access the Web
profile = webdriver.FirefoxProfile()
options = webdriver.FirefoxOptions()

profile.set_preference("dom.disable_beforeunload", True)
driver = webdriver.Firefox(firefox_profile = profile)
driver.maximize_window()

# Open the website
driver.get('https://www.awebsite.com/book-something.html#no-redirect')

# click on the sign in tab to get Login Window
driver.find_element_by_class_name('c-header__login-text').click()

# finding the Login Window User ID Box and sending the Login ID
User_ID = driver.find_element_by_class_name('js-login-email')
User_ID.send_keys('xxxx')

#Finding the Login Window Password Box and sending the Password
Password = driver.find_element_by_class_name('js-login-password')
Password.send_keys('yyyy')

#Finding the Login Window Log-In Button and Clicking on it
driver.find_element_by_class_name('js-login-submit').click()

#Pause a few seconds until the My Account Button appears
time.sleep(5)

#Find the unordered list that contains the 4th day (data-index 3) and then click on the element that is the 4th day
#Seven_Days = driver.find_element_by_xpath('c-schedule-calendar__unordered-list-toggle')
driver.find_element_by_xpath("//ul/li[@data-index='3']").click()
 

Ответ №1:

Вы должны установить в настройках профиля значение FALSE.

питон:

profile.set_preference(«dom.webnotifications.включено», Ложь)

Комментарии:

1. Разве это не Javascript? Когда я добавил эти 2 строки, удалил точки с запятой, я получил эту ошибку:Трассировка (последний последний вызов): Файл «C:/Users/Paul/AppData/Local/Programs/Python/Python37/OpenSite5.py», строка 11, в профиле <модуль>. setPreference(«dom.webnotifications.включено», ложь) Ошибка атрибута: объект ‘FirefoxProfile’ не имеет атрибута ‘setPreference’

2. Попробуйте сейчас и дайте мне знать, помогло ли вам это. Используйте тот же код , что и в вопросе, но с другим предпочтением и значением.

3. Извините, все еще получаю всплывающее окно. Это код, включающий строки с комментариями:` ‘ профиль = webdriver. FirefoxProfile() #параметры = веб-драйвер. FirefoxOptions() #profile.set_preference(«dom.disable_beforeunload», True) #профиль.set_preference(«dom.webnotifications.включено», Ложь) профиль.set_preference(«dom.push.включено», Ложь) драйвер = веб-драйвер. Драйвер Firefox(firefox_profile=профиль). maximize_window()

4. Я добавил всплывающее изображение к основной части вопроса. Спасибо.