Как выбрать элемент всплывающей подсказки с помощью Selenium - PullRequest
0 голосов
/ 09 октября 2019

Я пишу код, используя Selenium и Chromedriver для удаленного управления моим Instagram.

Мне удалось войти на платформу, однако, как только у меня появляется всплывающее окно с вопросом об активации уведомлений, и мой кодовый поток прерывается, потому что он больше не может щелкать элементы страницы Instagram.

это код, который я пытался использовать (который работает во время входа в систему, чтобы нажать кнопку «отправить»

notifBtn= self.browser.find_element_by_css_selector('button')
notifBtn.click()

(поскольку это первый экземпляр кнопки в веб-коде, он должен автоматически выбрать этот)

однако на этот раз браузер завис и ничего не делает.

во время входа в систему у меня возникла проблема, при которой он тоже не нажимал и обнаружил, что это произошло из-за задержки междузапрос перейти на страницу входа в Instagram и загрузить страницу, чтобы она могла найти элементы CSS. Я исправил это, добавив

time.sleep(2) 

перед вводом данных, и это исправило. Я думал, что нечто подобное будет работать здесьпоскольку он не загружается мгновенно, но это не имеет значения.

Это проблема с селектором, как я мог бы использовать xpath, чтобы получить вокруг него? В любом случае, извините, если это немного расплывчато, и не стесняйтесь спрашивать меня о моем коде или о чем-либо еще.

notifBtn= self.browser.find_element_by_css_selector('button')
notifBtn.click()

Я ожидаю, что Chromedriver нажмет не активировать во всплывающем окне, поэтому код может продолжиться, вместо этого я застрялна этом экране

1 Ответ

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

Ваш find_element_by_css_selector вызов, вероятно, обнаруживает несколько элементов и не знает, на какой из них нажать. Я бы использовал XPath здесь, чтобы быть более точным в том, какую кнопку вы пытаетесь нажать:

from selenium.webdriver.support import expected_conditions as EC


# Wait for button to exist
not_now_button = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.XPATH, "//button[text()='Not Now']")))

# Click the button
not_now_button.click()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...