handles的操作

 1 # coding=utf-8
 2 # project:web自动化练习
 3 # date:2020/6/4
 4 # author:Victoria
 5 # file:do_handles.py
 6 # 主要是练习handles的操作
 7 from selenium import webdriver
 8 from selenium.webdriver.support.wait import WebDriverWait
 9 from selenium.webdriver.common.by import By
10 from selenium.webdriver.support import expected_conditions as EC
11 from time import sleep
12 
13 driver = webdriver.Firefox()
14 driver.get("https://www.baidu.com/")
15 
16 driver.find_element_by_id("kw").send_keys("柠檬班")
17 driver.find_element_by_id("su").click()
18 
19 WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, "//div[@tpl='tieba_general']/h3/a")))
20 driver.find_element_by_xpath("//div[@tpl='tieba_general']/h3/a").click()
21 # 操作元素都等一等
22 sleep(0.5)
23 # 获取当前窗口的句柄
24 handles = driver.window_handles
25 print(handles)
26 # 打印当前窗口的句柄
27 print(driver.current_window_handle)
28 # 最后一个打开的界面为最新的界面
29 driver.switch_to.window(handles[-1])
30 
31 # 新的页面操作
32 # visibility_of_element_located里面是个元祖一定要记得价格括号
33 WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.ID, "j_head_focus_btn")))
34 driver.find_element_by_id("j_head_focus_btn").click()


方法2
使用new_window_is_opened
# coding=utf-8
# project:web自动化练习
# date:2020/6/4
# author:Victoria
# file:do_handles.py
# 主要是练习handles的操作
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from time import sleep

driver = webdriver.Firefox()
driver.get("https://www.baidu.com/")

driver.find_element_by_id("kw").send_keys("柠檬班")
driver.find_element_by_id("su").click()

WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, "//div[@tpl='tieba_general']/h3/a")))
# 获取当前窗口的句柄
handles = driver.window_handles  # 窗口总数为1
# 操作,引起窗口的数量发生变化
driver.find_element_by_xpath("//div[@tpl='tieba_general']/h3/a").click()
# 等待新窗口出现
WebDriverWait(driver, 10).until(EC.new_window_is_opened(handles))
# 重新获取一下窗口
handles = driver.window_handles  # 窗口总数为1
# 最后一个打开的界面为最新的界面
driver.switch_to.window(handles[-1])



原文地址:https://www.cnblogs.com/albeexu/p/13047383.html