为什么我得到一个IndexError?



我正试图从这里使用这个python代码。我用火狐壁虎驱动代替。我从第43行得到一个索引错误,它是log_in[0].click()。为方便起见,下面是代码:

# importing necessary classes
# from different modules
from lib2to3.pgen2 import driver
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.chrome.options import Options
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.keys import Keys
import time
browser = webdriver.Firefox()
prefs = {"profile.default_content_setting_values.notifications": 2}

# open facebook.com using get() method
browser.get('https://www.facebook.com/')
# user_name or e-mail id
username = "argleblargle@gmail.com"
# getting password from text file
with open('test.txt', 'r') as myfile:
password = myfile.read().replace('n', '')
print("Let's Begin")
element = browser.find_elements_by_xpath('//*[@id ="email"]')
element[0].send_keys(username)
print("Username Entered")
element = browser.find_element_by_xpath('//*[@id ="pass"]')
element.send_keys(password)
print("Password Entered")
# logging in
log_in = browser.find_elements_by_id('loginbutton')
log_in[0].click()
print("Login Successful")
browser.get('https://www.facebook.com/events/birthdays/')
feed = 'Hap Borth! Hope you have an amazing day!'
element = browser.find_elements_by_xpath("//*[@class ='enter_submit
uiTextareaNoResize uiTextareaAutogrow uiStreamInlineTextarea
inlineReplyTextArea mentionsTextarea textInput']")
cnt = 0
for el in element:
cnt += 1
element_id = str(el.get_attribute('id'))
XPATH = '//*[@id ="' + element_id + '"]'
post_field = browser.find_element_by_xpath(XPATH)
post_field.send_keys(feed)
post_field.send_keys(Keys.RETURN)
print("Birthday Wish posted for friend" + str(cnt))
# Close the browser
browser.close()

从代码中可以看到,当一个步骤完成时,它会打印出来。它通过了用户名输入,通过了密码输入,但没有通过登录成功。我得到IndexError: line 43, in <module> log_in[0].click()

这是因为登录按钮与代码首次编写时不同吗?这是2FA的恶作剧吗?我这样做是为了好玩,谢谢你的阅读。

编辑:最初的错误是由于ind_elements_by_id中的s。有一个因素。哎呀。

错误现在是selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: [id="loginbutton"]

log_in变量为空,因为包括facebook在内的许多网站首先加载网站,然后才加载布局和所有元素的javascript。

你的代码试图在facebook完全加载之前与之交互,因此找不到登录按钮。

你可以这样做来解决你的问题,或者只是写一个while循环来检查是否找到了按钮。

最新更新