如何将 python 数据传递回有关浏览器的调用脚本 window 在被调用脚本关闭时保持打开状态

How to pass python data back to the calling script about a browser window left open when the called script closes

我正在尝试找到将数据从 python script2.py 传回调用脚本 (script1.py) 的最佳方法。我在 Linux.

上使用 Python 3

Script1 调用 script2.py 然后使用 Selenium 打开浏览器 window 并做一些事情。当 script2 结束时,浏览器保持打开状态,而 script1 继续。我想要的是能够在 script1.

中在 script2 中打开的浏览器 window 上工作

到目前为止,我未能找到合适的方法将有关打开的浏览器 window 的信息从 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,但无法按我想要的方式工作,接下来可能会尝试使用 import JSON。但是我想知道我是否缺少一种更简单的方法来实现我在这里想要的。

感谢评论中的 pguardiario 让我走上正轨。答案是使用 script2 作为模块。

我实际上已经尝试这样做了,但是它使我的 script1 崩溃了,因为我在脚本的命名中有破折号,当它们是脚本时它工作正常,但由于某种原因在它们被使用时不起作用作为模块,但也不会给您任何错误。它完全脱离了脚本(在我的 linux/python 3 设置中就是这种情况)。

解决文件命名问题后,解决方案出奇地简单。

在 script1.py 我现在有

import script2

然后我使用

从第二个脚本调用 main() 函数
script2.main

我不必对 script2 进行任何更改,它从本地文件夹运行,因此不需要额外的路径设置,我现在也可以删除所有脚本调用代码。

要点是不要在模块命名中使用破折号,因为它不会给您任何错误警告,但不会导入它们。