# -*- coding:utf-8 -*-
'''
@project: web学习
@author: Jimmy
@file: 元素操作-切换.py
@ide: PyCharm Community Edition
@time: 2019-01-19 10:43
@blog: https://www.cnblogs.com/gotesting/
'''
'''
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('http://www.baidu.com')
driver.find_element_by_id('kw').send_keys('少年阿玉 博客园')
driver.find_element_by_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])
'''
alert弹出框操作
(1)使用switch_to方法先切换到浏览器弹出框
driver.switch_to.alert
(2)Alert类提供了一系列的操作方法
dismiss(): 否
accept(): 是
text(): 获取弹出框里的文本内容
Send_keys(): 在弹出框里输入文本
'''
alert = WebDriverWait(driver,10,1).until(EC.alert_is_present())
alert.accept()
'''
iframe切换
方式一:
WebDriverWait(driver,20,1).until(EC.visibility_of_element_located(By.XPATH,'XXXXXXX'))
1. 确认你要操作的元素,是否存在于iframe中,如果元素在iframe中,则切换
2. 找到这个iframe
3. 切换到这个iframe
driver.switch_to.frame() # name or index or webelement
time.sleep(1)
4. 切换完成后,目前就是以iframe当中的html为主html
方式二:
WebDriverWait(driver,20,1).until(EC.frame_to_be_available_and_switch_to_it('XXXXXX'
回到默认的html页面,无论身在哪一层iframe,执行一次就可。
driver.switch_to.default_content()
'''