Как передать данные Python обратно в вызывающий скрипт о том, что окно браузера остается открытым после закрытия вызываемого скрипта - PullRequest
1 голос
/ 17 октября 2019

Я пытаюсь найти лучший способ передать данные из python script2.py обратно в вызывающий скрипт (script1.py). Я использую Python 3 в Linux.

Script1 вызывает script2.py, который затем использует Selenium, чтобы открыть окно браузера и что-то сделать. Когда script2 заканчивается, браузер остается открытым, а script1 продолжается. Теперь я хочу работать с окном браузера, которое было открыто в script2, из скрипта 1.

До сих пор мне не удалось найти подходящий способ передачи информации об открытом окне браузера изscript2 вернуться к script1. Я считаю, что отчасти проблема заключается в том, что когда вызывается script2, script1 ждет, пока он не закроется, прежде чем продолжить, поэтому нет способа получить переменные, открытые в script2. Я также не хочу менять этот аспект.

в script1.py приведенный ниже код вызывает script2 следующим образом:

cmd = ['python3', '/home/admin/Desktop/Python_stuff/live-scripts/script2.py']
        subprocess.Popen(cmd).wait() # Python will now wait for script to end before continuing

в script2 приведенный ниже код открывает браузер изначально (который в настоящее время остаетсяоткрыть после закрытия script2) следующим образом:

driver.get(targetURL)

Я посмотрел на Pickle, но не смог заставить его работать так, как мне хотелось, и, вероятно, в следующий раз попробую использовать импорт JSON. Но мне стало интересно, не хватает ли мне более простого метода для достижения того, чего я хочу здесь.

1 Ответ

0 голосов
/ 17 октября 2019

Спасибо pguardiario в комментариях за правильную настройку. Ответ на это заключается в использовании script2 в качестве модуля.

На самом деле я уже пытался это сделать, но мой скрипт1 ломался, потому что у меня были тире в именах моих сценариев, что прекрасно работает, когда они являются сценариями, но по какой-то причине не работает, когда онииспользуется в качестве модулей и все же не дает вам ошибки. Это просто взрывает весь сценарий (на моей установке linux / python 3 это так).

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

в script1. py Теперь у меня есть

import script2

, затем я вызываю функцию main () из второго скрипта с

script2.main

Мне не нужно было вносить какие-либо изменения в script2, он запускается изЛокальная папка не требует дополнительной настройки пути, и теперь я могу также удалить весь код вызова скрипта.

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

...