Форум программистов, компьютерный форум, киберфорум
Python: Web
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 12.11.2019
Сообщений: 25
1

Повторно обратиться к запущенному браузеру selenium

12.11.2019, 14:23. Показов 886. Ответов 19
Метки нет (Все метки)

Хочу авторизоваться на стороннем сайте с помощью селениум. Авторизация состоит из двух страниц логин пароль на одной и код с почты на другой

Python
1
2
3
4
5
6
7
8
9
10
def login():
    if check == '1' 
            login = request.POST['username']
            passw = request.POST['password']
            if CheckLogin(login,passw): 
                return render(request, 'Pages/CodePage.html')
            else:# не верный логин или пароль
                return render(request, 'Pages/ErrPage.html')
        else: 
            #checkCode
Проверяю логин пароль и если они подошли показываю страницу кода
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
def CheckLogin(login, password):
 
   options = webdriver.ChromeOptions()
   browser = webdriver.Chrome(DRIVER_PATH,options=options)
   browser.get('https://site')
 
    
   loging = browser.find_element_by_name("username")
   loging.send_keys(login)
 
   passw = browser.find_element_by_name("password")
   passw.send_keys(password)
 
   browser.find_element_by_xpath("/input[2]").click()
 
   if #тут проверка логина и пароля
       return True
   else:
       return False
В итоге получаю: на локалхосте открыта страница с запросом кода и в вебдрайвере открыта страница с запросом кода. Но как мне теперь передать в браузер селениума открытый в CheckLogin то что я ввел на локалхост?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.11.2019, 14:23
Ответы с готовыми решениями:

Selenium. Доступ к браузеру из другой формы
В первой форме: public partial class Form1 : Form { public IWebDriver Browser =...

Как задать браузеру Firefox прокси с авторизацией в Selenium?
Приветствую форум, собственно, вопрос в заголовке :) В интернете уже долго ищу, но нет примеров...

Selenium ввести повторно данные в открытом браузере
Есть локальная страница с одним инпутом и кнопкой. Ввожу текст, жму кнопку, селениум через хром...

Как обратиться повторно к тому же столбцу и работать с ним, не трогая первый запрос?
Задание: Вывести для каждого поставщика сколько им было поставлено продуктов: в год и в каждом...

19
0 / 0 / 0
Регистрация: 12.11.2019
Сообщений: 25
13.11.2019, 10:10  [ТС] 2
Кто-нибудь может подсказать?
0
Эксперт Python
4487 / 3272 / 1058
Регистрация: 28.10.2013
Сообщений: 8,409
Записей в блоге: 1
13.11.2019, 12:19 3
Цитата Сообщение от Teddf Посмотреть сообщение
Кто-нибудь может подсказать?
Нет. Твой пост никто не распарсил мыслью (зачем, например, открыто два браузера?!). Учись формулировать вопросы.
0
Автоматизируй это!
Эксперт Python
4204 / 2886 / 856
Регистрация: 30.03.2015
Сообщений: 9,337
Записей в блоге: 15
13.11.2019, 13:52 4
Teddf, если ты вместо кода подробно опишешь что делаешь, для чего и чего хочешь добиться, то может и поможем
0
0 / 0 / 0
Регистрация: 12.11.2019
Сообщений: 25
13.11.2019, 13:58  [ТС] 5
Цитата Сообщение от Welemir1 Посмотреть сообщение
если ты вместо кода подробно опишешь что делаешь, для чего и чего хочешь добиться, то может и поможем
Хочу авторизоваться на стороннем сайте с помощью селениум.
0
Автоматизируй это!
Эксперт Python
4204 / 2886 / 856
Регистрация: 30.03.2015
Сообщений: 9,337
Записей в блоге: 15
13.11.2019, 14:08 6
Teddf, еще короче пиши, без подробностей, так лучше всего)
Если просто авторизоваться то не нужен второй браузер =открываем логин страничку, вводи логин,пароль и логин-кнопку жмем.
0
0 / 0 / 0
Регистрация: 12.11.2019
Сообщений: 25
13.11.2019, 14:10  [ТС] 7
после авторизации будет новая поисковая страница. Нужно в нее будет вставлять текст и кликать кнопку.
Как и писал ранее авторизация из двух частей: логин пароль и код. Проблема в том, что не знаю как обратиться повторно к запущенному браузеру и открытой странице в нем
0
Автоматизируй это!
Эксперт Python
4204 / 2886 / 856
Регистрация: 30.03.2015
Сообщений: 9,337
Записей в блоге: 15
13.11.2019, 14:15 8
Teddf, я как и писал ранее не понимаю что ты там понаписал в первом посте.
вводи логин и пароль селениумом, нажимай авторизоваться, с помощью апи почты выдергивай письмо с кодом, там бери код, вводи на странице кода. Так?

про какие-то твои локалхосты я не понимаю суть происходящего - зачем все это.
0
0 / 0 / 0
Регистрация: 12.11.2019
Сообщений: 25
13.11.2019, 17:11  [ТС] 9
логин, пароль и код вбиваться ручками на локальной странице и потом "передается" в селениум, а он уже проверяет на сайте.

Если введеный логин пароль верный показывается страница ввода кода (на локалхост). Мне этот код надо передать в селениум. Как?

Добавлено через 20 минут
или как то браузер можно запустить вне функции а потом что то вроде этого сделать

Python
1
2
3
4
5
def CheckLogin(login, password, code = ""):
    if code =="":
        #проверка логина пароля
    else:
        #проверка кода
0
Эксперт Python
4487 / 3272 / 1058
Регистрация: 28.10.2013
Сообщений: 8,409
Записей в блоге: 1
13.11.2019, 22:47 10
Действия по авторизации не требуют второго браузера. Более того - никакого браузера вообще зачастую не нужно.
Но чтобы это понять, нужно заставить себя изучить основы web технологий.
0
0 / 0 / 0
Регистрация: 12.11.2019
Сообщений: 25
14.11.2019, 08:53  [ТС] 11
Garry Galler, если уйти от моей задачи и не думать над ее реализацией.
Как запустить селениум в одной функции, а обратиться к нему из другой?
0
Автоматизируй это!
Эксперт Python
4204 / 2886 / 856
Регистрация: 30.03.2015
Сообщений: 9,337
Записей в блоге: 15
14.11.2019, 08:57 12
Teddf, молча. Селениум должен быть доступен глобально или через какой то объект (передаваемый в функцию), тогда хоть в 10 функциях вызывай. Проблема то в основах, а не селениум?
0
0 / 0 / 0
Регистрация: 12.11.2019
Сообщений: 25
14.11.2019, 09:00  [ТС] 13
Цитата Сообщение от Welemir1 Посмотреть сообщение
Проблема то в основах,
поэтому тема и в ветке Python для начинающих
0
0 / 0 / 0
Регистрация: 12.11.2019
Сообщений: 25
14.11.2019, 16:31  [ТС] 14
Welemir1, поможете, как это сделать?
0
Автоматизируй это!
Эксперт Python
4204 / 2886 / 856
Регистрация: 30.03.2015
Сообщений: 9,337
Записей в блоге: 15
14.11.2019, 16:32 15
Teddf, а я разве уже не ответил?
Цитата Сообщение от Welemir1 Посмотреть сообщение
Селениум должен быть доступен глобально или через какой то объект (передаваемый в функцию)
основы пайтон придется прочесть в любом случае, внимание на неймспейсы, области видимости, глобал, функции.
0
81 / 61 / 23
Регистрация: 01.11.2019
Сообщений: 282
14.11.2019, 20:55 16
Ввели данные - кликнули - дождались загрузки страницы - ввели данные - кликнули

Вот, накидал пример авторизации в яндексе (Сильно не пинать, это мой второй скрипт в работе с selenium)



Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
from selenium import webdriver
import time
driver = webdriver.Chrome('chromedriver.exe')
 
driver.get('https://passport.yandex.ru/auth/add?retpath=https%3A%2F%2Fyandex.ru%2Fsearch%2F%3Flr%3D44%26clid%3D2073747%26win%3D100%26msid%3D1573750390.45998.141015.2875%26text%3Dpython%2Bfind%26ncrnd%3D53950&reqid=1573752355269464-1734123579688756968600125-sas1-1695&origin=serp_desktop_auth_new')
 
cooci = driver.get_cookies()
login = input('login: ')
passw = input('pass: ')
 
 
 
 
user = driver.find_element_by_name('login')
user.send_keys(login)
btn = driver.find_element_by_css_selector('button[type="submit"]')
btn.click()
time.sleep(5)
 
password = driver.find_element_by_name('passwd')
password.send_keys(passw)
btn = driver.find_element_by_css_selector('button[type="submit"]')
btn.click()
 
time.sleep(10)
driver.close()
0
0 / 0 / 0
Регистрация: 12.11.2019
Сообщений: 25
14.11.2019, 21:09  [ТС] 17
volkomorov, это у вас все происходит на одной странице. Мне надо:
запустили браузер в функции А, передали в него логин и пароль из функции Б, проверили их, передали код из функции С
0
81 / 61 / 23
Регистрация: 01.11.2019
Сообщений: 282
14.11.2019, 21:21 18
driver1 =
driver2 =
driver3 =
0
0 / 0 / 0
Регистрация: 12.11.2019
Сообщений: 25
15.11.2019, 08:56  [ТС] 19
так новый браузер откроется. Мне нужно работать уже с открытым
0
81 / 61 / 23
Регистрация: 01.11.2019
Сообщений: 282
15.11.2019, 09:24 20
о return в функциях что-то слышали?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.11.2019, 09:24

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Передача аргументов запущенному приложению
Возможно ли передать аргументы уже запущенному приложению? Заранее благодарю за ответы. :)

Передача команды стороннему (запущенному) приложению
Как возможно передавать команду запущенному приложению? Необходимо в TotalCommander открыть...

Подцепиться к процессу запущенному и получить ExitCode
Доброго времени суток) Когда испробован 101 вариант - обращаюсь к вам... все попытки получить код...

Послать команду запущенному приложению (процессу)
Существует возможность послать команду запасающемуся приложению из командной строки типа:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.