在Linux服务器上使用selenium登录Facebook

问题描述 投票:0回答:1

我已经想到了这个项目。其中一部分是登录 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>

非常感谢任何帮助。

python linux selenium-webdriver facebook-login
1个回答
0
投票

我使用

driver.save_screenshot()
找到了解决方案。通过将图片发送到我的机器,我能够看到屏幕上发生的情况。我必须更改代码检查我是否已连接到
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, '//*[contains(@aria-label, "Accueil") or contains(@aria-label, "Home")]')))
的方式。

希望这对某人有帮助

© www.soinside.com 2019 - 2024. All rights reserved.