我已经想到了这个项目。其中一部分是登录 Facebook 帐户。 该代码在我的本地计算机(Windows)和本地服务器(ubuntu)上完美运行,但当我在在线 Linux 服务器上运行它时它不起作用。
def login_facebook(driver, email, password):
try:
logging.info("Logging into Facebook...")
driver.get('https://www.facebook.com')
email_input = WebDriverWait(driver, 30).until(
EC.presence_of_element_located((By.ID, 'email'))
)
logging.info("Email found")
email_input.send_keys(email)
password_input = WebDriverWait(driver, 30).until(
EC.presence_of_element_located((By.ID, 'pass'))
)
logging.info("Password found")
password_input.send_keys(password)
password_input.send_keys(Keys.RETURN)
logging.info("Keys sent")
# Adjust XPath or use a different locator strategy
WebDriverWait(driver, 120).until(
EC.visibility_of_element_located((By.XPATH, '//*[@aria-label="Facebook"]'))
)
logging.info("Logged into Facebook successfully.")
except Exception as e:
error_message = f"Error while logging into Facebook: {str(e)}"
logging.error(error_message)
send_error_email(error_message)
经过几个小时的调试,我仍然不知道如何解决它,但我知道什么不起作用。 该代码在检查“//*[@aria-label="Facebook"]”之前可以完美运行。 时间一分一秒过去,登录失败。 正如我之前所说,代码在我的 Windows 机器和本地 ubuntu 服务器上完美运行,根本没有任何更改,因此很难找到解决方案。
我尝试将 aria-label 更改为其他内容,但仍然没有效果。
这是错误,即使它不是很直接,也许它可以帮助:
2024-07-21 03:01:02,836 - ERROR - Error while logging into Facebook: Message:
Stacktrace:
#0 0x639c45d33c4a <unknown>
#1 0x639c45a2e29c <unknown>
#2 0x639c45a79bc1 <unknown>
#3 0x639c45a79cb1 <unknown>
#4 0x639c45abdf94 <unknown>
#5 0x639c45a9c96d <unknown>
#6 0x639c45abb33a <unknown>
#7 0x639c45a9c6e3 <unknown>
#8 0x639c45a6c879 <unknown>
#9 0x639c45a6d1ce <unknown>
#10 0x639c45cfc96f <unknown>
#11 0x639c45d00af6 <unknown>
#12 0x639c45ce979c <unknown>
#13 0x639c45d01291 <unknown>
#14 0x639c45ccf6ce <unknown>
#15 0x639c45d230d8 <unknown>
#16 0x639c45d232e6 <unknown>
#17 0x639c45d32cfd <unknown>
#18 0x7cdf49edeac3 <unknown>
非常感谢任何帮助。
我使用
driver.save_screenshot()
找到了解决方案。通过将图片发送到我的机器,我能够看到屏幕上发生的情况。我必须更改代码检查我是否已连接到 WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, '//*[contains(@aria-label, "Accueil") or contains(@aria-label, "Home")]')))
的方式。
希望这对某人有帮助