Как нажать на кнопку «Не сейчас» в Instagram через Selenium и Python - PullRequest
0 голосов
/ 09 декабря 2018

Я пытаюсь войти в Instagram с помощью «бота instagram», который я сейчас кодирую.Я получил его после экрана входа в систему, после экрана «получить приложение» и того, как он хочет включить уведомления.Два варианта «Включить» и «Не сейчас».Я пытаюсь использовать тот же метод, что и раньше, чтобы нажать «не сейчас», но это не сработает.Код (с использованием элемента inspect в Firefox) говорит:

<button class="aOOlW   HoLwm " tabindex="0">Not Now</button>

Я пытался использовать код класса с

notNowButton = driver.find_element_by_xpath("//a[@class='aOOlW HoLwm']")
# or
notNowButton = driver.find_element_by_xpath("//a[@tabindex='0']")

, но это тоже не работает.Любая помощь?

уведомление:

enter image description here

Ответы [ 3 ]

0 голосов
/ 09 декабря 2018

Кажется, вы были довольно близки.

В первой пробной версии кода:

driver.find_element_by_xpath("//a[@class='aOOlW HoLwm']")

<tag> - это не тег <a>, а <button>тег.Поэтому изменение его следующим образом сработало бы:

driver.find_element_by_xpath("//button[@class='aOOlW   HoLwm ']")

Теперь желаемый элемент - это элемент, поддерживающий JavaScript , поэтому вам нужно вызвать WebDriverWait для элемента чтобы быть кликабельным и следующая строка работала бы безупречно:

WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//button[@class='aOOlW   HoLwm ']"))).click()

В качестве альтернативы вы могли бы также использовать cssSelector следующим образом:

WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button.aOOlW.HoLwm"))).click()

Примечание : Вы должны добавить следующий импорт:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
0 голосов
/ 10 августа 2019
browser = webdriver.Chrome('/Users/username/Documents/WebDriver/chromedriver')


browser.find_elements_by_xpath("//button[contains(text(), 'Not Now')]")[0].click()
0 голосов
/ 09 декабря 2018

, используя WebDriverWait и текст соответствия Xpath Not Now

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait 

notNowButton = WebDriverWait(driver, 15).until(
    lambda d: d.find_element_by_xpath('//button[text()="Not Now"]')
)
notNowButton .click()
...