首页 > 解决方案 > 当我在构建机器人时尝试包含登录按钮的 HTML 详细信息时出现“NoSuchElementException”

问题描述

我一直在尝试在 python 中实现一个简单的机器人来增加 Instagram 的追随者。这就是我正在尝试的-> https://towardsdatascience.com/increase-your-instagram-followers-with-a-simple-python-bot-fde048dce20d在此过程中,我按照上述帖子中的说明安装了 chromedriver,并将其路径包含在 webdriver.chrome 中。我收集了 Instagram 中登录按钮的 HTML 元素(复制选择器)并将其粘贴到 find_element_by_name 方法中,但我收到一条错误消息,指出“NoSuchElementException:没有这样的元素:无法找到元素:{“method”:“name ","selector":"#react-root > section > main > div > article > div > div:nth-child(1) > div > form > div:nth-child(3) > button "} (会话信息: chrome=70.0.3538.110) (驱动信息: chromedriver=2.44.609538 (b655c5a60b0b544917107a59d4153d4bf78e1b90),platform=Windows NT 10.0.17134 x86_64)"

请在下面找到我的代码并帮助我解决此错误。提前致谢

import pandas as pd
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from time import sleep, strftime
from random import randint

webdriver=webdriver.Chrome(executable_path="C:\\Users\\Vishal\\chromedriver.exe")

sleep(2)

webdriver.get('https://www.instagram.com/accounts/login/?source=auth_switcher')

sleep(3)

username = webdriver.find_element_by_name('#react-root > section > main > div > article > div > div:nth-child(1) > div > form > div:nth-child(3) > button ')

标签: pythonseleniumweb-scrapingbots

解决方案


添加几个等待以确保可见性并且可以单击登录。使用较短的选择器来定位按钮。请注意,您需要在前两个登录字段中添加值才能使按钮可点击。

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

url = 'https://www.instagram.com/accounts/login/?source=auth_switcher'
d = webdriver.Chrome()
d.get(url)
WebDriverWait(d,5).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "[name=username]"))).send_keys('bob')
d.find_element_by_css_selector('[name=password]').send_keys('builder')
WebDriverWait(d, 5).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "form div:nth-of-type(3)"))).click()

推荐阅读