Есть ли какая-либо причина для получения веб-сеанса, который управляется одноразовым паролем только для браузера

Я устанавливаю сеанс с хромом, в котором необходимо войти на веб-сайт с именем пользователя, паролем и OTP (одноразовым паролем), который отправляется на телефон. OTP предназначен только для браузера, что означает, что если я введу имя пользователя, пароль и OTP в Chrome один раз, в следующий раз он попросит меня ввести только имя пользователя и пароль, а не OTP. Я использую selenium-python для автоматизации этого, и selenium всегда открывает новое окно браузера. Как я могу преодолеть эту ситуацию?

Я попытался сохранить файлы cookie, а затем загрузить их в драйвер, но все еще запрашивал OTP.

# Saved functions are below.

import pickle

# Path = "E:\\Python\\cookies\\cookies.pkl".
def save_cookie(driver, path):
    """
    Save cookies in cookies folder.
    """
    with open(path, 'wb') as filehandler:
        pickle.dump(driver.get_cookies(), filehandler)

def load_cookie(driver,path):
    """
    Load cookies from the saved folder.
    """
    with open(path, 'rb') as cookiesfile:
        cookies = pickle.load(cookiesfile)
        for cookie in cookies:
            driver.add_cookie(cookie)

# Here is what I'm trying.

from selenium import webdriver
from udf import cookies
import pickle

driver = webdriver.Chrome()
driver.get('https://somewebsite.com/')
cookies.save_cookie(driver,'E:\\Python\\cookies\\cookies.pkl')

cookies.load_cookie(driver, 'E:\\Python\\cookies\\cookies.pkl')

driver.refresh()

Мне все еще нужно отправить OTP для браузера Chrome.


person Harpreet Singh    schedule 24.12.2018    source источник
comment
каждый раз, когда вы создаете новый экземпляр Chrome(), он использует новый браузер (с профилем и пустыми файлами cookie/хранилищем)   -  person Corey Goldberg    schedule 24.12.2018
comment
вы можете создать профиль вручную и использовать его в автоматизации. вот мой старый пост stackoverflow.com/questions/36275652/ в java, но теперь мы должны использовать chromeOptions вместо DesiredCapabilities.   -  person murali selenium    schedule 24.12.2018
comment
@murali, можете ли вы рассказать мне больше об этом, я новичок в селене и веб-автоматизации.   -  person Harpreet Singh    schedule 24.12.2018
comment
Сначала вам нужно войти в систему с помощью OTP, а затем сохранить файлы cookie.   -  person Ratmir Asanov    schedule 24.12.2018
comment
@HarpreetSingh см. предоставленный ответ   -  person murali selenium    schedule 24.12.2018


Ответы (2)


Откройте браузер Chrome вручную. Перейдите к chrome://версия/

Запишите путь к профилю, его профиль, который вы используете в настоящее время.

В том же браузере перейдите к своему приложению, войдите в систему со всеми необходимыми вещами.

затем вызовите этот профиль в сценарии.

Посмотрите, как вызвать в python Как загрузить профиль по умолчанию в Chrome с использованием Python Selenium Webdriver?

Вы должны указать путь к профилю здесь, в приведенной выше ссылке.

options.add_argument("user-data-dir=C:\\Path") #Path to your chrome profile
person murali selenium    schedule 24.12.2018
comment
ОП использует pickle. Возможно, вы также можете добавить некоторую помощь в обработке файлов cookie. - person DebanjanB; 24.12.2018
comment
@DebanjanB Ничего не делает, просто добавил для дальнейшего кода. - person Harpreet Singh; 24.12.2018
comment
@HarpreetSingh Комментарий был для muraliselenium :) В любом случае, если pickle и cookies не играют роли в вашем вопросе, вы должны удалить эти строки кода, чтобы упростить задачу. - person DebanjanB; 24.12.2018

ниже код работал для меня.
Описание: я создал новый профиль в Chrome, выполнив действия chrome://settings/>. Добавить людей и управлять ими > Добавить человека. Затем войдите в мой аккаунт YouTube в новом профиле. Затем следующий код дает мне автоматически зарегистрированную страницу YouTube. Путь к профилю можно найти в chrome://version/ в пути к профилю: ключ.

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = webdriver.ChromeOptions() 
options.add_argument("user-data-dir=C:\\Users\\randh\\AppData\\Local\\Google\\Chrome\\User Data\\Profile 2") #Path to your chrome profile which you have created.
driver = webdriver.Chrome(chrome_options=options) #Place webdrivers in Scripts folder of Python(Where Python is installed), so that it can be picked automatically.
driver.get('https://youtube.com')

Лайк или комментарий...

person Harpreet Singh    schedule 27.12.2018