我的作業系統 → Microsoft Windows 11
谷歌瀏覽器:
我打開了 Google 網站,我想在新選項卡中打開 Stack Overflow 網站,但螢屏一直顯示 Google 網站,如下所示:

我的第一次嘗試是使用webbrowser模塊及其autoraise引數進行嘗試:
sof = 'https://stackoverflow.com'
webbrowser.open(sof, new=0, autoraise=False)
webbrowser.open(sof, new=2, autoraise=False)
webbrowser.open_new_tab(sof)
上述選項均未導致 Chrome 中的選項卡在后臺打開,從而將注意力集中在已打開的選項卡上。
所以我再次嘗試使用subprocess它的getoutput功能:
r = subprocess.getoutput(f"google-chrome-stable https://stackoverflow.com")
r
該選項甚至沒有在我的瀏覽器中打開一個新標簽。
火狐瀏覽器:

我的嘗試是使用webbrowser模塊及其autoraise引數進行嘗試(由于我的默認瀏覽器不同,我需要設定瀏覽器):
sof = 'https://stackoverflow.com'
webbrowser.register('firefox',
None,
webbrowser.BackgroundBrowser("C://Program Files//Mozilla Firefox//firefox.exe"))
webbrowser.get('firefox').open(sof, new=0, autoraise=False)
在這兩個中,我都沒有設法使這個功能起作用。
我應該如何進行?
回應中也歡迎其他瀏覽器和實作這種結果的并行方法!
uj5u.com熱心網友回復:
鉻合金:
我認為這是不可行的(至少不帶鉻)。請參閱此 StackExchange 答案。特別是提到的很可能永遠不會得到修復的錯誤。
火狐:
同樣在這里,做了一些研究,讓它作業的唯一解決方案是更改配置選項
'browser.tabs.loadDivertedInBackground' to 'true'
像這樣啟動背景選項卡(或從 py 使用osorsubprocess模塊):
"C:\Program Files\Mozilla Firefox\firefox.exe" -new-tab "https://stackoverflow.com/"
請參閱https://stackoverflow.com/a/2276679/2606766。但是我再次認為這不能解決您的問題,是嗎?
uj5u.com熱心網友回復:
也許你可以嘗試使用pynput庫刺激鍵盤,然后刺激crtl Tab切換到新打開的網站?
*編輯:要打開上一個選項卡,請按 crtl shift tab
import webbrowser, time
from pynput.keyboard import Key,Controller
keyboard = Controller()
webbrowser.open("https://www.youtube.com/")
time.sleep(3)
keyboard.press(Key.ctrl)
keyboard.press(Key.shift)
keyboard.press(Key.tab)
keyboard.release(Key.ctrl)
keyboard.release(Key.shift)
keyboard.release(Key.tab)
uj5u.com熱心網友回復:
你熟悉CDP和Selenium嗎?
選項 A:
CDP 通過 Selenium 控制的瀏覽器:
from selenium import webdriver
driver = webdriver.Chrome('/path/bin/chromedriver')
driver.get("https://example.com/")
driver.execute_cdp_cmd(cmd="Target.createTarget",cmd_args={"url": 'https://stackoverflow.com/', "background": True})
“背景”:真實是關鍵
編輯:
在 linux 上,瀏覽器不會關閉,至少對我來說是這樣。 如果它在代碼終止時終止,請嘗試以下操作:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
CHROME_DRIVER_PATH = '/bin/chromedriver'
chrome_options = Options()
chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])
chrome_options.add_experimental_option("detach", True)
driver = webdriver.Chrome(CHROME_DRIVER_PATH, chrome_options=chrome_options)
driver.get("https://example.com/")
driver.execute_cdp_cmd(cmd="Target.createTarget",cmd_args={"url": 'https://stackoverflow.com/', "background": True})
選項 B:
使用除錯埠(通過 cmdsubprocess.popen或其他任何方式)手動運行 chrome
chrome.exe --remote-debugging-port=4455
然后要么使用 python CDP 客戶端,例如trio
或告訴selenium 使用您現有的瀏覽器:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:4455")
# Change chrome driver path accordingly
CHROME_DRIVER_PATH= r"C:\chromedriver.exe"
driver = webdriver.Chrome(CHROME_DRIVER_PATH, chrome_options=chrome_options)
driver.get("https://example.com/")
driver.execute_cdp_cmd(cmd="Target.createTarget",cmd_args={"url": 'https://stackoverflow.com/', "background": True})
uj5u.com熱心網友回復:
最簡單的就是用chromedriver切換到-1 window_handles
from selenium import webdriver
driver = webdriver.Chrome('chrome/driver/path')
driver.switch_to.window(driver.window_handles[-1])
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/480876.html
