gpt4 book ai didi

python - Selenium 开关选项卡

转载 作者:太空宇宙 更新时间:2023-11-04 00:07:15 27 4
gpt4 key购买 nike

由于 Firefox 不再支持选项卡的 Control + T,我开始使用 driver.execute_script("window.open('URL', 'new_window')")

我正在尝试显示我打开的不同选项卡的标题并在它们之间切换。对于下面的示例,我希望输出为 facebook、google 并返回 facebook。现在输出是 facebook、facebook 和 facebook。

我尝试了这里的答案,但也没有用:Switch back to parent tab using selenium webdriver

from selenium import webdriver

driver = webdriver.Firefox()
driver.get("http://www.facebook.com/")
print(driver.title)

driver.execute_script("window.open('http://google.com', 'new_window')")
print(driver.title)

driver.switch_to.window(driver.window_handles[0])
print(driver.title)

更新:我尝试了以下代码,但仍然无法正常工作。

from selenium import webdriver

driver = webdriver.Firefox()
driver.get("http://www.facebook.com/")
print(driver.title)
window_before = driver.window_handles[0]

driver.execute_script("window.open('http://google.com', 'new_window')")
window_after = driver.window_handles[1]
driver.switch_to.window(window_after)
print(driver.title)

最佳答案

关于选项卡/窗口切换/处理的几句话:

  • 始终跟踪父窗口 句柄,以便您可以在需要时根据您的用例稍后返回。

  • 始终使用 WebDriverWaitexpected_conditions作为number_of_windows_to_be(num_windows)Tabs/Windows 之间切换之前。

  • 始终跟踪子窗口 句柄,以便您可以在需要时遍历。

  • 始终将 WebDriverWaitexpected_conditions 一起使用作为title_contains("partial_page_title")在提取页面标题之前。

  • 这是你自己的代码,上面提到了一些小的调整:

    from selenium import webdriver
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC

    driver = webdriver.Firefox(executable_path=r'C:\WebDrivers\geckodriver.exe')
    driver.get("http://www.facebook.com/")
    print("Initial Page Title is: %s" %driver.title)
    windows_before = driver.current_window_handle
    driver.execute_script("window.open('http://google.com')")
    WebDriverWait(driver, 10).until(EC.number_of_windows_to_be(2))
    windows_after = driver.window_handles
    new_window = [x for x in windows_after if x != windows_before][0]
    driver.switch_to.window(new_window)
    WebDriverWait(driver, 20).until(EC.title_contains("G"))
    print("Page Title after first window switching is: %s" %driver.title)
    driver.close()
    driver.switch_to.window(windows_before)
    WebDriverWait(driver, 20).until(EC.title_contains("F"))
    print("Page Title after second window switching is: %s" %driver.title)
    driver.quit()
  • 控制台输出:

    Initial Page Title is: Facebook – log in or sign up
    Page Title after first window switching is: Google
    Page Title after second window switching is: Facebook – log in or sign up

关于python - Selenium 开关选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53690243/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com