使用 Selenium Chrome 切换到第二个选项卡 - 关于:空白

问题描述 投票:0回答:1

切换到第二个选项卡的正确方法是什么?

现在,我单击网站上的链接,这会打开另一个窗口,但选项卡是关于:空白的。

我正在尝试在此页面上执行某些操作,但 Selenium 仍处于默认内容,我如何更改为下一个句柄?

我尝试按照此处的文档进行操作,但自己无法弄清楚,https://www.selenium.dev/documentation/webdriver/interactions/windows

这就是我所拥有的,但这只是检测到一个选项卡正在打开,即使下图显示了两个。

    from seleniumbase import Driver
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium import webdriver
import time

driver = Driver(uc=True, external_pdf = True)
driver.get('https://www.fedex.com/fedextrack/?trknbr=123456789012&trkqual=2460234000~123456789012~FX')
driver.maximize_window()

# Setup wait for later
wait = time.sleep(2)

# Store the ID of the original window
original_window = driver.current_window_handle

# Check we don't have other windows open already
assert len(driver.window_handles) == 1

# Select Obtain proof button
WebDriverWait(driver, 5).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="obtain-proof-link-id"]'))).click()
wait

# Select View PDF button
WebDriverWait(driver, 5).until(EC.element_to_be_clickable((By.CSS_SELECTOR, '[class="fdx-c-button fdx-c-button--primary fdx-c-button--responsive fdx-u-pt--4 fdx-u-pb--4"]'))).click()

options = webdriver.ChromeOptions()
options.add_experimental_option("prefs", {
  "download.default_directory": r"C:\\Users\\User1\\Downloads\\BPAAS",
  "download.prompt_for_download": True,
  "download.directory_upgrade": True,
  "safebrowsing.enabled": True
})


WebDriverWait(driver, 5).until(EC.number_of_windows_to_be(2))

# Loop through until we find a new window handle
for window_handle in driver.window_handles:
    if window_handle != original_window:
        driver.switch_to.window(window_handle)
        break

print(driver.current_url)

driver.quit()
python selenium-webdriver
1个回答
0
投票

下面的代码应该可以工作。问题是您正在打开一个包含 PDF 的选项卡,但 Selenium 无法看到该 PDF 的内部内容,因为它不是网页,因此如果您想对 PDF 执行某些操作,则必须获取另一个库。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait

url = 'https://www.fedex.com/fedextrack/?trknbr=123456789012&trkqual=2460234000~123456789012~FX'
driver = webdriver.Chrome()
driver.maximize_window()
driver.get(url)

wait = WebDriverWait(driver, 10)

# Click Obtain proof link
wait.until(EC.element_to_be_clickable((By.ID, "obtain-proof-link-id"))).click()

# Click View PDF button
original_window = driver.current_window_handle
wait.until(EC.element_to_be_clickable((By.XPATH, "//button[text()=' View PDF ']"))).click()

# Wait for new window to open and switch to it
wait.until(EC.number_of_windows_to_be(2))
for window_handle in driver.window_handles:
    if window_handle != original_window:
        driver.switch_to.window(window_handle)
        break

# we're now in the new tab, do stuff
© www.soinside.com 2019 - 2024. All rights reserved.