我刚接到一份新工作,我必须通过打开一堆页面并登录它们来开始新的一天。我希望自动化这个过程,因为它可能有点单调乏味。我想单独留下我的个人浏览窗口,打开一个包含我需要的所有页面的新窗口。以下是我尝试做的事情的要点:
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)
由于某种原因,这段代码只是在我当前的浏览器中打开新标签,这基本上与我希望它做的相反。发生了什么事?
答案 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,但似乎存在多个问题:
webbrowser.get
需要浏览器的名称,而不是路径。webbrowser.get()
的返回值并使用它来打开剩余的网址。
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教程。自动化要简单得多。