У меня есть небольшой код, который работает для автоматического входа кого-то в его электронную почту Outlook в браузере chrome. Пользователь должен будет ввести свой адрес электронной почты и пароль в код, чтобы он работал. Он работает нормально, пока я не попытаюсь определить тело кода, чтобы сделать его более чистым и позволить писать больше кода под ним, не вмешиваясь в функцию.
from selenium import webdriver
import time
def outlook():
driver = webdriver.Chrome()
x = 'https://login.live.com/login.srf?wa=wsignin1.0&rpsnv=13&ct=1592499273&rver=7.0.6737.0&wp=MBI_SSL&wreply=https%3a%2f%2foutlook.live.com%2fmail%2f0%2finbox%3fRpsCsrfState%3d8a0340e9-f9ec-d8ca-1b7d-c36e5fc0520f%26wa%3dwsignin1.0%26nlp%3d1&id=292841&aadredir=1&CBCXT=out&lw=1&fl=dob%2cflname%2cwld&cobrandid=90015'
driver.get(x)
loginBox = driver.find_element_by_xpath('//*[@id="i0116"]')
loginBox.send_keys('email')
loginButton = driver.find_element_by_xpath('//*[@id="idSIButton9"]')
loginButton.click()
passBox = driver.find_element_by_xpath('//*[@id="i0118"]')
passBox.send_keys('password')
time.sleep(2)
passButton = driver.find_element_by_xpath('//*[@id="idSIButton9"]')
passButton.click()
outlook()
Функция time.sleep вызвана тем, что нажатие кнопки не регистрируется, когда код выполняется слишком быстро. Проблема в том, что приведенный выше код с определенной функцией работает нормально, но закрывает окно chrome, которое создается после входа в систему. Если я удалю 'outlook ()' и 'def outlook ():', он будет работать нормально, не закрывая chrome окно.
Мне интересно, почему это так и есть ли обходной путь.