Нет такой ошибки элемента при нажатии на кнопку входа в Tinder - PullRequest
0 голосов
/ 28 февраля 2020

Я пытаюсь научиться взаимодействовать с inte rnet с python и следовал учебному пособию, которое я нашел о том, как создать бота, который взаимодействует с tinder. Я могу получить окно chrome, и оно может go на веб-сайт, но у меня возникают проблемы при попытке нажать кнопку входа в систему. Вот код, который я использовал (я импортировал веб-драйвер из селена и спал от времени, но он здесь не переносился):

class tinderAI():
def __init__(self):
    self.driver = webdriver.Chrome()
def login(self):
    self.driver.get('https://tinder.com')
    sleep(2)
    fb_btn = self.driver.find_element_by_xpath('//*[@id="modal-manager"]/div/div/div/div/div[3]/div[2]/button')
    fb_btn.click()

Код ошибки, который я получаю после использования этого кода:

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id="modal-manager"]/div/div/div/div/div[3]/div[2]/button"}

Любая помощь в решении проблемы будет принята с благодарностью. Спасибо!

Ответы [ 2 ]

0 голосов
/ 29 февраля 2020

В соответствии с испытаниями вашего кода локатор:

//*[@id="modal-manager"]/div/div/div/div/div[3]/div[2]/button

представляет кнопку с текстом в виде Войдите в Facebook и вызовите click() для элемента, который вам нужно вызвать WebDriverWait для element_to_be_clickable(), достигающего до ребенка <span>, и вы можете использовать любую из следующих Стратегий локатора :

  • Использование CSS_SELECTOR:

    WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button[type = 'button'][aria-label = 'Log in with Facebook'] span"))).click()
    
  • Использование XPATH:

    WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//button[@type = 'button' and @aria-label = 'Log in with Facebook']//span"))).click()
    
  • Примечание : необходимо добавить следующие импорты:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
  • Снимок браузера:

tinder_facebook_login


Ссылка

Подробное соответствующее обсуждение можно найти в:

0 голосов
/ 28 февраля 2020

Глядя на источник html, я вижу этот xpath: // * [@ id = "modal-manager"] / div / div / div / div / div [3] / span / div [2] / button

Так что, попробуйте?

fb_btn = self.driver.find_element_by_xpath('//*[@id="modal-manager"]/div/div/div/div/div[3]/span/div[2]/button')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...