webbrowser没有打开新窗口

时间:2016-07-25 18:06:20

标签: python python-webbrowser

我刚接到一份新工作,我必须通过打开一堆页面并登录它们来开始新的一天。我希望自动化这个过程,因为它可能有点单调乏味。我想单独留下我的个人浏览窗口,打开一个包含我需要的所有页面的新窗口。以下是我尝试做的事情的要点:

import webbrowser
first = True
chromePath = 'C:/Program Files (x86)/Google/Chrome/Application/chrome.exe %s'
URLS = ("first page", "second page", "third page")
for url in URLS:
    if first:
        webbrowser.get(chromepPath).open(url)
        first = False
    else:
        webbrowser.open(url, new=2)

由于某种原因,这段代码只是在我当前的浏览器中打开新标签,这基本上与我希望它做的相反。发生了什么事?

4 个答案:

答案 0 :(得分:2)

解决方案要简单得多。假设您具有chrome.exe的标准路径遍历(并且您的操作系统是Windows),这就是解决方案(即使您以前已经打开过一个chrome窗口,它也会打开一个新的chrome窗口)。公元前必须使用subprocess而不是os.system,否则,如果已经打开了一个新的chrome窗口,则它不会打开。问候

import subprocess
urL         ='https://www.google.com'
chrome_path ="C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe"
child       = subprocess.Popen(chrome_path, shell=True)

答案 1 :(得分:1)

我没有安装Chrome,但似乎存在多个问题:

  1. 根据文档,webbrowser.get需要浏览器的名称,而不是路径。
  2. 您应该保存webbrowser.get()的返回值并使用它来打开剩余的网址。
  3. import webbrowser
    URLS = ("first page", "second page", "third page")
    browser= webbrowser.get('chrome')
    first= True
    for url in URLS:
        if first:
            browser.open_new(url)
            first = False
        else:
            browser.open_new_tab(url)
    

答案 2 :(得分:1)

可能为时已晚,但可能会帮助其他人。

根据文档,您应该尝试使用 new = 1

  

webbrowser.open(url,new = 0,autoraise = True)

     

使用默认浏览器显示网址。如果new为0,则打开url   如果可能,在同一浏览器窗口中。如果new为1,则为新浏览器   如果可能,窗口打开。如果new为2,则为新的浏览器页面(“tab”)   尽可能打开。如果autoraise为True,则会引发窗口   可能(请注意,在许多窗口管理器下会发生这种情况   无论此变量的设置如何。)

文档链接:Webbrowser docs

答案 3 :(得分:1)

我遇到了类似的问题。我只是使用os.system()打开chrome的新实例。我还使用以下方法将chrome.exe注册为新的浏览器:

#register the browser
chrome_path = "C:\\Users\\cj9250\\AppData\\Local\\Google\\Chrome\\Application\\chrome.exe"
webbrowser.register('chrome', None,webbrowser.BackgroundBrowser(chrome_path),1)

other posts中有关于使用.get调用chrome路径的指南。尽管尝试了这种方法以及许多其他不同的方法,但我还是无法让chrome打开新的窗口和会话。

最后,我来到os.system打开chrome的新实例。因此对于您的代码,它看起来像这样:

import webbrowser
import os #use for new instance of chrome

#urls I want to open in array
URLS = (
        "first page", 
        "second page", 
        "third page"
        )

#register the browser
chrome_path = "YOUR PATH TO CHROME\\chrome.exe" #note the double \ syntax
webbrowser.register('chrome', None,webbrowser.BackgroundBrowser(chrome_path),1)

#open new instance of chrome
os.system(r'YOUR PATH TO CHROME\chrome.exe')

#open each url
for url in URLS:
    webbrowser.get('chrome').open(url)

看看您要做什么,我认为Selenium更适合。我也每天都使用Web应用程序来工作,我花时间浏览一些Selenium教程。自动化要简单得多。