首页 > 解决方案 > 单击 Tinder 登录按钮时没有此类元素错误

问题描述

我正在尝试学习如何使用 python 与互联网交互,并按照我找到的关于如何制作与 tinder 交互的机器人的教程进行操作。我可以打开一个 chrome 窗口,它可以访问网站,但是当我尝试单击登录按钮时遇到问题。这是我使用的代码(我从 selenium 导入了 webdriver,并且不时休眠,但它不会在这里传输):

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"}

解决问题的任何帮助将不胜感激。谢谢!

标签: pythonselenium

解决方案


根据您的代码试验定位器:

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

将带有文本的按钮表示为使用 Facebook 登录并调用click()您需要诱导WebDriverWaitelement_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


参考

您可以在以下位置找到详细的相关讨论:


推荐阅读