web自动化-切换新窗口
一、实现窗口切换的两种方式
第一种方式: 1、触发新的窗口打开 2、获取所有打开的窗口。 --- 列表。新窗口都是在列表的最后一个。获取新窗口之前要sleep(2) wins_list = driver.window_handles 当前所有窗口的句柄 3、切换到2中列表的最后一个。 driver.switch_to(wins_list[-1]) 第二种方式: 显性等待当中,有一个条件是关于新窗口的。 EC.new_window_is_opened(现在已有的窗口句柄列表) 怎么判断是否有新窗口的?? len(去重新获取当前的所有窗口句柄) > len(现在已有的窗口句柄列表) 0、现在已有的窗口句柄列表(win_list = driver.window_handles) 1、触发新的窗口打开 2、WebDriverWait(driver,10).until(EC.new_window_is_opened(现在已有的窗口句柄列表)) 3、获取所有打开的窗口。 --- 列表。新窗口都是在列表的最后一个。 wins_list = driver.window_handles 当前所有窗口的句柄 4、切换到2中列表的最后一个。 driver.switch_to(wins_list[-1])
二、代码实现:
方案一
# 导入selenium包 from selenium import webdriver from time import sleep from selenium.webdriver.common.by import By # 打开一个浏览器 # 1、启动chromedriver驱动程序 # 2、通过驱动程序,与chrome之间创建一个会话(会话Id)。打开chrome浏览器。 driver = webdriver.Chrome() #调整为最大窗口: driver.maximize_window() #打开百度地址 driver.get("https://www.baidu.com/") element=driver.find_element(By.XPATH,'//input[@id="kw"]') element.click() #输入操作 element.send_keys("陈然") #点击百度按钮查询 element1 =driver.find_element(By.ID,"su") element1.click() #获取新的窗口一定要等一下 sleep(3) #打开新的窗口 element2=driver.find_element(By.XPATH,'//span[@style="color:;" and text()="陈然"]') element2.click() #获取当前所有打开的窗口 wind_list = driver.window_handles print(wind_list) sleep(2) #切换到新窗口: a=driver.switch_to.window(wind_list[-1]) sleep(2) element3=driver.find_element(By.XPATH,'//a[@title="革命烈士"]') element3.click() sleep(2) driver.quit()
方案二
from time import sleep from selenium import webdriver from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By # 打开浏览器,与浏览器开始一次会话。 driver = webdriver.Chrome() driver.get("http://www.baidu.com") driver.maximize_window() # 1、找到输入框这个元素 2、对它进行输入操作 driver.find_element(By.ID,"kw").send_keys("陈然") driver.find_element(By.ID,"su").click() wins_list1 = driver.window_handles print("当前的1个窗口句柄:", wins_list1) # 元素locator表达 sleep(1) loc = (By.XPATH, '//span[@style="color:;" and text()="陈然"]') # 等待 WebDriverWait类 sleep(1) WebDriverWait(driver, 10).until(EC.visibility_of_any_elements_located(loc)) sleep(2) driver.find_element(*loc).click() # 获取所有窗口的句柄 wins_list2 = driver.window_handles print("当前的2个窗口句柄:", wins_list2[-1]) #切换到新的窗口 driver.switch_to.window(wins_list2[-1]) sleep(3) loc1 = (By.XPATH, '//a[@title="革命烈士"]') sleep(1) WebDriverWait(driver, 10).until(EC.visibility_of_any_elements_located(loc1)) sleep(2) driver.find_element(*loc1).click() sleep(3)
 
                    
                
 
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号