|
2 / 2 / 0
Регистрация: 21.04.2022
Сообщений: 29
|
|
Передача объекта webdriver из одного запущенного скрипта в другой, при определённом условии12.01.2023, 23:39. Показов 2796. Ответов 29
Здравствуйте.
Тема очень сложная Есть задача, которая на первый взгляд звучит легко, но увы. Описание задачи. Скрипт 1.py Создаёт несколько объектов webdrivera (driver1, driver2, driver3), выполняет определённые задачи с ними и потом просто стоит, ждёт, что-бы передать этот конечный объект в скрипт 2.py." Скрипт 2.py Включается в другое совершенно время, выполняет свои задачи и при наступлении определённого условия обращается к этим "уже подготовленным объектам" и перенимает контроль над тем браузером, который был открыт каждым вебдрайвером. Сразу говорю, никакого пессимизма, со словами "Это не возможно" Всё возможно! ![]() Я гуглила пару дней и примерно поняла в каком направлении нужно копать. Нужно работать с библиотеками memcash, и сокет (создание сервер, клиент) и вроде как должно получится. Если у Вас есть какие либо мысли по этому поводу или альтернативные решения, предложения, то буду им рада.
0
|
|
| 12.01.2023, 23:39 | |
|
Ответы с готовыми решениями:
29
Передача переменной из одного скрипта в другой |
|
Йуный плагиат-падаван)
176 / 119 / 45
Регистрация: 17.10.2022
Сообщений: 566
|
|||||||||||
| 14.01.2023, 23:39 | |||||||||||
|
Я понимаю, похоже, что "травление объектов" веб-драйвера и передача их через файл не является жизнеспособным решением в данном случае.
Другой вариант, который вы могли бы попробовать, это использование Remote WebDriver, который позволяет вам подключиться к веб-драйверу, запущенному на другой машине или в другом процессе. Таким образом, сценарий 1 может запустить веб-драйвер и продолжать его работу, в то время как сценарий 2 подключается к нему и берет управление на себя. Вот пример того, как можно использовать RemoteWebDriver в скрипте1:
1
|
|||||||||||
|
2 / 2 / 0
Регистрация: 21.04.2022
Сообщений: 29
|
||
| 15.01.2023, 02:31 [ТС] | ||
|
Да, по моему это оно, прям вот близко Но у меня выдаёт следующую ошибку. C:\Users\S1\PycharmProjects\server.py:5: DeprecationWarning: desired_capabilities has been deprecated, please pass in an Options object with options kwarg driver = webdriver.Remote( Traceback (most recent call last): File "C:\Python\Python39\lib\site-packages\urllib3\connection.py", line 174, in _new_conn conn = connection.create_connection( File "C:\Python\Python39\lib\site-packages\urllib3\util\connection.py", line 95, in create_connection raise err File "C:\Python\Python39\lib\site-packages\urllib3\util\connection.py", line 85, in create_connection sock.connect(sa) ConnectionRefusedError: [WinError 10061] During handling of the above exception, another exception occurred: Traceback (most recent call last): File "C:\Python\Python39\lib\site-packages\urllib3\connectionpool.py", line 703, in urlopen httplib_response = self._make_request( File "C:\Python\Python39\lib\site-packages\urllib3\connectionpool.py", line 398, in _make_request conn.request(method, url, **httplib_request_kw) File "C:\Python\Python39\lib\site-packages\urllib3\connection.py", line 239, in request super(HTTPConnection, self).request(method, url, body=body, headers=headers) File "C:\Python\Python39\lib\http\client. py", line 1279, in request self._send_request(method, url, body, headers, encode_chunked) File "C:\Python\Python39\lib\http\client. py", line 1325, in _send_request self.endheaders(body, encode_chunked=encode_chunked) File "C:\Python\Python39\lib\http\client. py", line 1274, in endheaders self._send_output(message_body, encode_chunked=encode_chunked) File "C:\Python\Python39\lib\http\client. py", line 1034, in _send_output self.send(msg) File "C:\Python\Python39\lib\http\client. py", line 974, in send self.connect() File "C:\Python\Python39\lib\site-packages\urllib3\connection.py", line 205, in connect conn = self._new_conn() File "C:\Python\Python39\lib\site-packages\urllib3\connection.py", line 186, in _new_conn raise NewConnectionError( urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection object at 0x000001BEB582A1F0>: Failed to establish a new connection: [WinError 10061] During handling of the above exception, another exception occurred: Traceback (most recent call last): File "C:\Users\S1\PycharmProjects\server. py", line 5, in <module> driver = webdriver.Remote( File "C:\Python\Python39\lib\site-packages\selenium\webdriver\remote\webdr iver.py", line 270, in __init__ self.start_session(capabilities, browser_profile) File "C:\Python\Python39\lib\site-packages\selenium\webdriver\remote\webdr iver.py", line 363, in start_session response = self.execute(Command.NEW_SESSION, parameters) File "C:\Python\Python39\lib\site-packages\selenium\webdriver\remote\webdr iver.py", line 426, in execute response = self.command_executor.execute(driver_com mand, params) File "C:\Python\Python39\lib\site-packages\selenium\webdriver\remote\remot e_connection.py", line 344, in execute return self._request(command_info[0], url, body=data) File "C:\Python\Python39\lib\site-packages\selenium\webdriver\remote\remot e_connection.py", line 366, in _request response = self._conn.request(method, url, body=body, headers=headers) File "C:\Python\Python39\lib\site-packages\urllib3\request.py", line 78, in request return self.request_encode_body( File "C:\Python\Python39\lib\site-packages\urllib3\request.py", line 170, in request_encode_body return self.urlopen(method, url, **extra_kw) File "C:\Python\Python39\lib\site-packages\urllib3\poolmanager.py", line 376, in urlopen response = conn.urlopen(method, u.request_uri, **kw) File "C:\Python\Python39\lib\site-packages\urllib3\connectionpool.py", line 815, in urlopen return self.urlopen( File "C:\Python\Python39\lib\site-packages\urllib3\connectionpool.py", line 815, in urlopen return self.urlopen( File "C:\Python\Python39\lib\site-packages\urllib3\connectionpool.py", line 815, in urlopen return self.urlopen( File "C:\Python\Python39\lib\site-packages\urllib3\connectionpool.py", line 787, in urlopen retries = retries.increment( File "C:\Python\Python39\lib\site-packages\urllib3\util\retry.py", line 592, in increment raise MaxRetryError(_pool, url, error or ResponseError(cause)) urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='127.0.0.1', port=4444): Max retries exceeded with url: /wd/hub/session (Caused by NewConnectionError('<urllib3.connection. HTTPConnection object at 0x000001BEB582A1F0>: Failed to establish a new connection: [WinError 10061] Добавлено через 56 секунд Извиняюсь за полотно Добавлено через 3 минуты Пишет, что не смог создать соединение, так как целевой компьютер отказал в соединении Добавлено через 2 часа 28 минут Вот я ступила ![]() В общем так. 1)Устанавливаем Java 2)Скачиваем webdriver server .jar 3)Запускаем Server.jar в cmd А остальное завтра )
0
|
||
|
Йуный плагиат-падаван)
176 / 119 / 45
Регистрация: 17.10.2022
Сообщений: 566
|
|
| 15.01.2023, 10:31 | |
|
DK100, Похоже, что проблема связана с подключением к RemoteWebDriver. Сообщение об ошибке 'ConnectionRefusedError: [WinError 10061]' указывает на то, что соединение с указанным исполнителем команд (http://127.0.0.1:4444/wd/hub) отклоняется.
Это может быть связано с тем, что сервер selenium не запущен на вашей машине или сервер настроен неправильно. Чтобы использовать RemoteWebDriver, вам необходимо запустить сервер selenium на вашей машине. Вы можете скачать jar-файл сервера selenium по этой ссылке: https://www.selenium.dev/downloads/. Затем вы можете запустить сервер с помощью следующей команды: java -jar selenium-server-standalone-*.jar После запуска сервера вы можете выполнять свои скрипты. Также важно отметить, что в методе Remote следует использовать 'options' вместо 'desired_capabilities', так как desired_capabilities было устаревшим, как указано в предупреждающем сообщении.
0
|
|
|
207 / 58 / 19
Регистрация: 18.02.2018
Сообщений: 258
|
|||||||||||
| 16.01.2023, 18:16 | |||||||||||
|
Ой, я не заметил, что script2.py открывает новый профайл (что происходит при инициализации вебдрайвера по умолчанию)... Придётся переписать стандартный класс инициализации и передать в него идентификатор сессии.
script2.py
script1.py
1
|
|||||||||||
|
2 / 2 / 0
Регистрация: 21.04.2022
Сообщений: 29
|
|
| 16.01.2023, 19:37 [ТС] | |
|
У меня в первом скрипте, при запуске сервера выдаёт ошибку
self.server.shutdown() AttributeError: module 'self' has no attribute 'server' Что делать, как быть?
0
|
|
|
207 / 58 / 19
Регистрация: 18.02.2018
Сообщений: 258
|
||||||
| 16.01.2023, 19:54 | ||||||
|
Да нет, это часть скрипта (я привёл окрестность кода, в которой сделал измнение), а не сам script1.py. А, ну... В этом треде он ждёт ответа клиента, а у меня в коде этого уже нет... В общем, вот текущий исходный код script1.py:
1
|
||||||
|
2 / 2 / 0
Регистрация: 21.04.2022
Сообщений: 29
|
|
| 17.01.2023, 10:55 [ТС] | |
|
Здравствуйте,
У меня так же второй скрипт создаёт-открывает новый браузер, не перенимая первый. Всё таки не даром нужно использовать selenium webdriver grid Вы тестировали, у вас работает или это предположение?
0
|
|
|
207 / 58 / 19
Регистрация: 18.02.2018
Сообщений: 258
|
|
| 17.01.2023, 13:09 | |
|
Второй скрипт создаёт свою инстанцию chrome, затем закрывает её и подключается к инстанции, созданной первым скриптом. Ведь суть в том, что в начале второй скрипт "выполняет свои задачи", а затем обращается к "подготовленному объекту": d = RemoteExisting(sid, command_executor=url). Через 5 секунд после редактирования текста в теге <p> в site.html, второй скрипт откроет произвольный сайт в окне браузера, открытом первым скриптом. Разве этого не происходит?
0
|
|
|
2 / 2 / 0
Регистрация: 21.04.2022
Сообщений: 29
|
|
| 17.01.2023, 15:52 [ТС] | |
|
Походу я ступила.
Надо ещё раз тогда вечерком потестить
0
|
|
|
207 / 58 / 19
Регистрация: 18.02.2018
Сообщений: 258
|
||||||||||||||||
| 17.01.2023, 17:17 | ||||||||||||||||
|
Вот итоговый проект, для общности в предложенном мной:
site.html
Предусловие: Запустить script1.py и script2.py. Шаги теста: 1. Изменить текст в теге <p> сайта site.html и сохранить файл. 2. Подождать несколько секунд.
0
|
||||||||||||||||
| 17.01.2023, 17:17 | |
|
Помогаю со студенческими работами здесь
30
Передача параметров из одного скрипта в другой. С# Передача переменной из одного скрипта в другой Передача значений переменных из одного js-скрипта в другой Delphi, передача интерфейса com-объекта из одного потока, в другой Передача методу одного объекта ссылки на другой объект Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта
Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
|
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром.
возможно получится прикрутить интерпретатор питон для кастомизации игровой логики.
что есть на текущий момент:. . .
|
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2.
Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
|
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
|
|
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2.
Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
|
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2.
Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом.
В. . .
|
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2.
Задача: отобразить спецтехнику, которая на данный момент находится в ремонте.
Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
|
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
|