我正试图使用Python Selenium登录Office 365 Outlook,它重定向为2因子Auth。
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
email_ID = "YourEmail@Gmail.com"
Password = "Password"
driver = webdriver.Chrome(executable_path="C:pythonLibschromedriverchromedriver.exe")
driver.set_page_load_timeout(10)
driver.get("https://outlook.office365.com/mail/inbox")
try:
element = WebDriverWait(driver, 10).until
(
# EC.presence_of_element_located((By.ID, "myDynamicElement"))
EC.url_contains("login.microsoftonline.com/common/oauth2/authorize")
)
finally:
print("2nd Login Page Reached.")
print(driver.current_url)
# Login
driver.find_element_by_id("i0116").send_keys(email_ID)
# driver.find_element_by_id("i0118").send_keys(Password) #passwordBrowserPrefill
print("Login Entered")
driver.find_element_by_xpath('//*[@id="idSIButton9"]').submit()
在输入电子邮件并提交后的第一页重定向(第二页(上,它用的页面击中了我
登录
抱歉,我们在让您登录时遇到问题。
AADSTS90100:登录参数为空或无效。
如果我对提交进行注释,并在输入电子邮件后手动单击"下一步",它将正常工作。
我之前曾尝试在提交之前添加一个隐含的等待,但无效
我期待你的建议。
尝试:
driver.find_element_by_xpath('//*[@id="idSIButton9"]').click()
代替:
driver.find_element_by_xpath('//*[@id="idSIButton9"]').submit()
因为您似乎是在输入所有必需值之前提交登录表单的。