Я улучшаю свой код, делая его более удобным для чтения, коротким и динамичным c.
Я получил имя пользователя и пароль, спрятанные с помощью dotenv.
Как вы можете видеть первым открывает драйвер, а затем в функции я прошу его ввести URL-адрес, затем зависит от того, какую учетную запись я ввел в параметре, к которому драйвер получит доступ, указав c email.
Я уже думаю о назначении драйвер действует в нескольких переменных, но поскольку веб-вход в систему состоит из 2 шагов:
- учетная запись и пароль
- зашифрованный пароль
это не может быть сделано так.
Есть мысли?
load_dotenv()
options = webdriver.ChromeOptions()
executable_path = {"executable_path": "/usr/local/bin/chromedriver"}
browser = Browser("chrome", **executable_path, headless=False)
bw = browser.driver
html = browser.html
soup = BeautifulSoup(html, "html.parser")
def open_web_email(account):
"""[This function will open web email]
Arguments:
account {[account]} -- [returns what email will open]
"""
bw.get("https://webemail.com/login")
bw.set_window_size(1080, 820)
# username = bw.find_element_by_xpath('//*[@id="username"]')
# password = bw.find_element_by_xpath('//*[@id="password"]')
# login_butt = bw.find_element_by_xpath('//*[@id="login_btn"]')
if account == "1":
time.sleep(2)
bw.find_element_by_xpath('//*[@id="username"]').send_keys(os.getenv("P_USERNAME_ONE"))
bw.find_element_by_xpath('//*[@id="password"]').send_keys(os.getenv("P_PSW_ONE"))
bw.find_element_by_xpath('//*[@id="login_btn"]').click()
bw.find_element_by_xpath('//*[@id="mailboxPassword"]').send_keys(os.getenv("P_MAILBOX_ONE"))
bw.find_element_by_xpath('//*[@id="unlock_btn"]').click()
elif account == "2":
bw.find_element_by_xpath('//*[@id="username"]').send_keys(os.getenv("P_USERNAME_TWO"))
bw.find_element_by_xpath('//*[@id="password"]').send_keys(os.getenv("P_PSW_TWO"))
bw.find_element_by_xpath('//*[@id="login_btn"]').click()
bw.find_element_by_xpath('//*[@id="mailboxPassword"]').send_keys(os.getenv("P_MAILBOX_TWO"))
bw.find_element_by_xpath('//*[@id="unlock_btn"]').click()
Может быть, лучший способ сделать это - использовать классы?