1. windows窗口切换:切换到要操作的窗口
有多个窗口:
1. 触发新窗口的出现
2. 得知道新窗口是谁 -- 依据窗口的window_handle来识别窗口
3. 得到窗口的window_handle -- driver.window_handles(当前打开的所有窗口的句柄)
A. 得到的是一个有序列表
B. 新窗口: -1
4. 切换:driver.switch_to.window(要切换的窗口的句柄)
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 import time driver = webdriver.Chrome() driver.get('https://www.baidu.com/') driver.find_element_by_xpath('//*[@id="kw"]').send_keys('许嵩') driver.find_element_by_xpath('//input[@id="su"]').click() #显示所有窗口 wins = driver.window_handles time.sleep(3) #打开新的窗口 driver.find_element_by_xpath('//*[@id="1"]/h3/a ').click() #判断新窗口是否已经打开 WebDriverWait(driver,5,1).until(EC.new_window_is_opened(wins)) #切换窗口 # 1.获取所有窗口 wins1 = driver.window_handles # 2.切换到新窗口 driver.switch_to.window(wins1[-1]
2. alert弹出框操作
(1)使用switch_to方法先切换到浏览器弹出框
driver.switch_to.alert
(2)Alert类提供了一系列的操作方法
dismiss(): 否
accept(): 是
text(): 获取弹出框里的文本内容
send_keys(): 在弹出框里输入文本
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('https://www.baidu.com/') # 在当前窗口/框架 同步执行javaScript driver.execute_script("alert('这是一个alert弹框')") #判断弹窗存在 alert = WebDriverWait(driver,10,1).until(EC.alert_is_present()) # driver.switch_to_alert().accept() #相当于点击“确定” driver.switch_to_alert().dismiss() #相当于点击“取消” # text=driver.switch_to_alert().text #获取弹窗框里面的文字 # print(text) # driver.close()