python - 当我在构建机器人时尝试包含登录按钮的 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 ')
解决方案
添加几个等待以确保可见性并且可以单击登录。使用较短的选择器来定位按钮。请注意,您需要在前两个登录字段中添加值才能使按钮可点击。
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()
推荐阅读
- android - 如何在 Android 中以编程方式启用 VoWiFi(WiFi 通话)?
- typescript - 如何根据 TypeScript 中其他属性的值声明属性类型
- javascript - 在 VueJS 中过滤 v-for 列表后,如果 Child 为空,则隐藏字符串
- javascript - Jest 测试用例失败 - ReferenceError: Office is not defined
- gwt - GWT JsInterop - 在 JavaScript 中扩展 Java 接口
- c# - 如何从与 C# 中的 UI 线程不同的线程访问 HttpContext.Request.Cookie?
- python-3.x - SyntaxError:if 语句时语法无效
- assembly - 链接 C 文件后无法让 QEMU 引导我的引导加载程序
- android - 有时,ConflatedBroadcastChannel 会在没有任何操作的情况下触发最近的值
- iis - iis 将 https://example.com/default.aspx/default.aspx 的 url 重写为 https://example.com