我打開了一個全新的視窗和三個選項卡。
driver.get('link1')
driver.switch_to.new_window('tab')
driver.get('link2')
wait.sleep(2)
driver.switch_to.new_window('tab')
driver.get('link3')
如何存盤 tab1、tab2、tab3 的 id,以便以編程方式在它們之間切換?
我試過這個:
original_window = driver.current_window_handle
uj5u.com熱心網友回復:
你沒有描述你遇到了什么問題,current_window_handle所以我不明白你的問題。如果您收到一些錯誤訊息,那么您應該將其顯示出來。
我可以創建(許多)選項卡并獲取 ID/處理程式
driver.switch_to.new_window('tab')
tab_id = driver.current_window_handle
稍后切換到此選項卡
driver.switch_to.window(tab_id)
driver.get('link2')
即使我在創建的新視窗中創建選項卡,所有這些都有效
driver.switch_to.new_window('window')
Doc使用視窗和選項卡
順便說一句:在第一句話的檔案中,您可以看到
"WebDriver does not make the distinction between windows and tabs."
首先創建 4 個空選項卡并用于driver.current_window_handle獲取 ID/處理程式并保留在串列中的最小作業代碼。后來它使用這個串列來切換標簽并加載 4 個不同的 url。
即使我在視窗中手動切換(或重新編碼)選項卡,它也可以作業。
測驗:
Linux Mint 20Python 3.8Selenium 4.1.3- 瀏覽器:
Firefox,Chrome,Microsoft Edge.
我使用模塊webdriver_manager自動下載當前瀏覽器的新驅動程式。
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
#from webdriver_manager.firefox import GeckoDriverManager
#from webdriver_manager.microsoft import EdgeChromiumDriverManager
import selenium
print('Selenium:', selenium.__version__)
all_urls = [
'https://httpbin.org/get',
'https://toscrape.com/',
'https://books.toscrape.com/',
'https://quotes.toscrape.com/',
]
all_tabs = []
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
#driver = webdriver.Firefox(service=Service(GeckoDriverManager().install()))
#driver = webdriver.Edge(service=Service(EdgeChromiumDriverManager().install()))
#print('--- create second window ---')
#driver.switch_to.new_window('window')
print('--- create empty tabs ---')
for number in range(len(all_urls)):
driver.switch_to.new_window('tab')
tab_id = driver.current_window_handle
all_tabs.append(tab_id)
print(f'tab{number 1}:', tab_id)
print('--- switch tabs to load urls ---')
for number, (tab_id, url) in enumerate(zip(all_tabs, all_urls), 1):
driver.switch_to.window(tab_id)
driver.get(url)
print(f'tab{number}:', driver.current_window_handle, url)
# now you can manually switch/reorder tabs and rerun last for-loop
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/480837.html
上一篇:如何在節點之后找到“文本”?
