【问题标题】:How can I open a new browser tab with subprocess?如何使用子进程打开新的浏览器选项卡?
【发布时间】:2016-06-29 12:16:46
【问题描述】:

我正在打开一个新的 IE 窗口:

subprocess.Popen(r'"' + os.environ["PROGRAMFILES"] + 
'\Internet Explorer\IEXPLORE.EXE" ' + Call_URL)

当 IE 关闭时这很好,但即使它打开时也会产生一个新窗口。如何只打开一个新标签?如果可能的话,我想使用标准浏览器——但是我也不知道该怎么做。

注意:我不能使用 webbrowser 并且 os 没有 .startfile。我对 os.popen 也没有运气(使用 Jython 2.5.3b1)。

【问题讨论】:

    标签: python browser subprocess


    【解决方案1】:

    由于您还想要一个标准浏览器,所以我举了一个例子来用 chrome 打开一个新标签。如果 chrome 尚未打开,它将打开,然后导航到 URL。

    import subprocess
    subprocess.Popen("start chrome /new-tab www.google.com",shell = True)
    

    这行得通。请尝试让我知道这是否是您想要的。

    另一个没有对 Call_URL 进行硬编码

    import subprocess
    Call_URL = "www.google.com"
    mycmd = r'start chrome /new-tab {}'.format(Call_URL)
    subprocess.Popen(mycmd,shell = True) 
    

    你期待这样的事情吗?

    【讨论】:

    • 谢谢。不过,我遇到了一些错误。 On Shell = True:TypeError: unsupported operand type(s) for +: 'NoneType' and 'list' On Shell = False 或删除 Shell 参数:OSError: Cannot run program "start" (in directory "C:\Users\Admin\Desktop"): CreateProcess error=2, The system cannot find the file specified 这有效:subprocess.Popen(r'"C:\Users\Admin\AppData\Local\Google\Chrome\Application\chrome.exe" /new-tab ' + Call_URL).. 我猜这是一个小改进,但不会调用用户的标准浏览器。 (天哪,堆栈上的文本编辑器 suck
    • @MapEngine Call_URL 应该被提及,因为我已经提到了 www.google.com。不能在命令后传递。
    • 在 Jython 中不起作用(没有 .format)。也不启动标准浏览器。我基本上想做“使用您拥有的任何浏览器访问 google.com”。由于以上在我的情况下不起作用,我将其重写为至少与用户无关:subprocess.Popen(r'"'+ 'C:\\Users\\' + os.environ["USERNAME"] + '\AppData\Local\Google\Chrome\Application\chrome.exe" /new-tab ' + Call_URL)
    猜你喜欢
    • 2018-08-29
    • 2022-12-09
    • 1970-01-01
    • 1970-01-01
    • 2015-06-11
    • 2014-11-15
    • 2016-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多