如何关闭标签页,然后使用硒转到另一个标签页?

时间:2019-12-22 06:40:26

标签: python selenium selenium-webdriver window-handles

这是一个示例脚本:

import  var
print(var.demend)

最后,它单击一些东西将打开一个新选项卡。我想关闭新标签并继续使用原始标签

2 个答案:

答案 0 :(得分:0)

driver.window_handles是浏览器标签的对象。

假设您要关闭第二个标签页(新标签页),此方法有效。

# continue from your code
driver.switch_to.window(driver.window_handles[1])
driver.close()

只需将window_handles[i]的i更改为其他标签即可。

答案 1 :(得分:0)

要关闭新标签并继续使用原始标签,您必须:

  • 切换到新标签,为number_of_windows_to_be(2)close()生成 WebDriverWait
  • 切换回父选项卡。

    • 代码块:

      from selenium import webdriver
      from selenium.webdriver.support.ui import WebDriverWait
      from selenium.webdriver.common.by import By
      from selenium.webdriver.support import expected_conditions as EC
      
      options = webdriver.ChromeOptions() 
      options.add_argument("start-maximized")
      options.add_experimental_option("excludeSwitches", ["enable-automation"])
      options.add_experimental_option('useAutomationExtension', False)
      driver = webdriver.Chrome(options=options, executable_path=r'C:\WebDrivers\chromedriver.exe')
      
      driver.get('https://www.startpage.com/en/')
      print("Initial Page Title is : %s" %driver.title)
      windows_before  = driver.current_window_handle
      print("First Window Handle is : %s" %windows_before)
      WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input.search-form__input"))).send_keys("Example")
      driver.find_element_by_css_selector("span.search-form__button-icon").click()
      WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//h3[@class='w-gl__label']//following::h3[1]"))).click()
      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)
      print("Page Title after Tab Switching is : %s" %driver.title)
      print("Second Window Handle is : %s" %new_window)
      driver.close()
      driver.switch_to.window(windows_before)
      print("Page Title after second Tab Switching is : %s" %driver.title)
      print("Current Window Handle is : %s" %windows_before)
      
    • 控制台输出:

      Initial Page Title is : Startpage.com - The world's most private search engine
      First Window Handle is : CDwindow-18CCC5501A5F68CBE1C3094D0D0B419D
      Page Title after Tab Switching is : YouTube
      Second Window Handle is : CDwindow-2EDCAB04A232660E8BCBD7A079DE574B
      Page Title after second Tab Switching is : Startpage.com Search results
      Current Window Handle is : CDwindow-18CCC5501A5F68CBE1C3094D0D0B419D
      
  

您可以在Open web in new tab Selenium + Python

中找到相关的详细讨论