python - 单击 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"}
解决问题的任何帮助将不胜感激。谢谢!
解决方案
根据您的代码试验定位器:
//*[@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
浏览器快照:
参考
您可以在以下位置找到详细的相关讨论:
推荐阅读
- eclipse - m2e 菜单中的“干净验证”选项
- javascript - 如果两个承诺同时解决,这是否是可能的竞争条件?
- colors - 如何从 RGB/CMYK/Hexcode 模型中定义特定颜色的颜色范围?
- kubernetes - 在 Kubernetes 中的多个服务实例之间同步 HTTP 请求
- r - 更快的 for 循环
- javascript - 使用 pubmed api 提取作者隶属关系
- android - 为什么我在 Android Studio 中解析 JSON 时无法访问 URL?
- spring-boot - java中的速率限制和节流
- excel - 如何在Excel中复制具有特定列的所有行?
- tags - 当端点按标签重新分组时,如何访问 api.mustache 中有关导入的供应商扩展