1、iframe切换
切换到对应的iframe标签中可以进行定位
切换方法:driver.switch_to.frame
driver.switch_to.frame(名称)
driver.switch_to.frame(索引)
driver.switch_to.frame(elements节点)
driver = webdriver.Chrome() driver.get('https://mail.qq.com/') time.sleep(2) # 方式一:切换iframe:通过iframe的名字(name属性)进行切换 driver.switch_to.frame('login_frame') driver.find_element_by_xpath("//a[text()='帐号密码登录']").click() # 方式二:通过索引去切换iframe标签 time.sleep(2) driver.switch_to.frame(0) driver.find_element_by_xpath('//div[@id="wxLoginTab"]').click() driver.find_element_by_xpath('//p[@id="auto_login"]/a').click() # 方式三:通过element节点去进行切换 ele_iframe = driver.find_element_by_xpath('//iframe[@id="login_frame"]') driver.switch_to.frame(ele_iframe) driver.find_element_by_xpath("//a[text()='帐号密码登录']").click()
# 方式四:使用显示等待的方式,等待iframe处于可以的状态,然后切换进行 WebDriverWait(driver, 20, 1).until( EC.frame_to_be_available_and_switch_to_it((By.XPATH, '//iframe[@id="login_frame"]')) ) driver.find_element_by_xpath("//a[text()='帐号密码登录']").click() # 关于iframe切换回 默认的HTML页面 driver.switch_to.default_content() # 切换回父级的iframe中 driver.switch_to.parent_frame()
2、alert弹框切换
# 关于alert弹框的切换 alert = driver.switch_to.alert # 点击确认 alert.accept() # 点击取消 alert.dismiss() # 输入内容 alert.send_keys("python34567890")
3、窗口切换
获取所有窗口的句柄
ws = driver.window_handles
print(ws)
切换窗口的方法(窗口名),-1表示最新打开的窗口,1表示第一个窗口,2,3以此类推
driver.switch_to.window(ws[-1])
# 等待新窗口打开
ws = driver.window_handles
WebDriverWait(driver,5,0.5).until(EC.new_window_is_opened(ws)