我的 Instagram 自动化代码没有将用户名和密码填入登录页面
Posted
技术标签:
【中文标题】我的 Instagram 自动化代码没有将用户名和密码填入登录页面【英文标题】:My Instagram automation code doesn't fill the username and password into login page 【发布时间】:2022-01-22 11:23:19 【问题描述】:我是编码新手,我开始创建 Instagram 机器人。我的代码打开网页并导航到登录页面,但没有填写用户名和密码的空白。我想使用硒,我尝试了不同的方法,我在这里上传的是最后一个。我不知道这里有什么问题。
from selenium import webdriver
import os
import time
class InstaBot:
def __init__(self, username = None, password = None):
self.username = '******'
self.password = '******'
self.driver = webdriver.Firefox()
self.login()
def login(self):
self.driver.get('https://instagram.com')
username_input = self.driver.find_element_by_name('username')
password_input = self.driver.find_element_by_name('password')
username_input.send_keys(self.username)
password_input.send_keys(self.password)
login_btn.click()
if __name__ == '__main__':
ig_bot = InstaBot('temp_username', 'temp_password')
【问题讨论】:
【参考方案1】:Instagram 网站是由React 元素构建的,因此要将字符序列 发送到您需要为WebDriverWait 诱导element_to_be_clickable() 的元素,您可以使用以下任一种Locator Strategies:
使用CSS_SELECTOR:
WebDriverWait(self.driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[name='username']"))).send_keys("limbalu")
self.driver.find_element(By.CSS_SELECTOR, "input[name='password']").send_keys("limbalu")
使用XPATH:
WebDriverWait(self.driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@name='username']"))).send_keys("limbalu")
self.driver.find_element(By.XPATH, "//input[@name='password']").send_keys("limbalu")
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
【讨论】:
【参考方案2】:希望问题解决了。 我已将代码更改为
username_input = self.driver.find_element_by_css_selector("input[name='username']") password_input = self.driver.find_element_by_css_selector("input[name='password']")
它有效!
【讨论】:
您的定位器与我在answer 中建议的定位器有何不同?以上是关于我的 Instagram 自动化代码没有将用户名和密码填入登录页面的主要内容,如果未能解决你的问题,请参考以下文章
Flutter:登录 Instagram 时未获取代码(Instagram 登录不起作用)