在构建机器人时尝试包含登录按钮的 HTML 详细信息时出现“NoSuchElementException”

Posted

技术标签:

【中文标题】在构建机器人时尝试包含登录按钮的 HTML 详细信息时出现“NoSuchElementException”【英文标题】:Getting a "NoSuchElementException" when I tried to include HTML details of a login button when building a bot 【发布时间】:2019-05-08 10:57:33 【问题描述】:

我一直在尝试在 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 ')

【问题讨论】:

@QHarr 是的,谢谢。明白了。 【参考方案1】:

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

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()

【讨论】:

感谢您的回复。我是硒的新手。我只是按照网站上提供的说明进行操作。 “使用短选择器来定位按钮”是什么意思?通过等待,这意味着自动化程序将需要时间加载,因此我们正在应用等待条件?什么是“前 2 个登录字段”? 如上所示,我使用了较短的 CSS 选择器来定位按钮。我只是觉得它更具可读性,而且可能更快。是的,在 selenium 启动后,您需要等待才能找到输入框。前两个登录字段:我的意思是用户名和密码。可以看到上面代码中我使用CSS属性选择器的地方引用的name属性,用[]表示 试一试,看看效果如何。如有任何其他问题,请告诉我。 这应该钉住OP

以上是关于在构建机器人时尝试包含登录按钮的 HTML 详细信息时出现“NoSuchElementException”的主要内容,如果未能解决你的问题,请参考以下文章

企业微信机器人怎么使用?

2023年微信小程序获取手机号授权登录注册详细教程,包含服务端教程

使用 FB 登录构建了一个自定义 html 页面。我想在使用 facebook 登录按钮后将它们重定向到主页

处理同时动作

从主详细信息中的选项卡式页面导航到登录页面时,应用程序在iOS13 +中崩溃

facebook、twitter、facebook登录、whatsapp分享、微信分享