小肥羊要进步

Web自动化窗口切换的2种形式(window&Iframe)

 

切换分为1)windows切换 2)iframe切换

drivere.switch_to.window/frame

 

1.什么情况下需要窗口切换?

1)页面的操作,打开了一个新的窗口,你需要在新的窗口当中,去进行下一步操作  2) 页面当中又iframe,并且要进入iframe去进行下一个操作                                                                                   2.怎么知道要切换到 哪个窗口?代码如何知道哪个窗口时新的窗口?

1)得到目前打开的所有窗口--句柄 每一个窗口都又一个句柄  列表 ----欠货出现  先出现的,先追加到刘表,最新的窗口,在列表的最后,最先打开的窗口,在列表的第一个

获取所有句柄:wins=driver_handles

2)切换到新窗口  driver.switch_to.window(wins[-1])  

等待新的窗口出现   

  iframe:

1)定位iframe:下标/name属性/webElement对象

2)切换:driver.switch_to.frame()

等待iframe可见 time.sleep(1)

 

 

二.iframe切换

什么情况需要iframe切换?

需要操作的元素在iframe种

1.识别元素是否在iframe,F12

2.切换:1)切换到哪个iframe?  iframe时标签对,是当前默认html的一个元素

腾讯课堂的QQ登录页面为例  //iframe[@name="login_frame_qq"]

driver.switch_to.frame()

支持3种方式来确定切换到哪一个iframe

1)从iframe下标 ,从0开始,driver.switch_to.frame(3)

2)iframe元素的name属性 driver.switch_to.frame("login_frame_qq")

3)iframe这个webelement元素,driver.swich_to.frame(driver.find_element_by_xpath('//iframe[@name="login_frame_qq"])

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")
#element=driver.find_element_by_id("kw")
#1)进入又iframe的页面
#操作到又iframe的页面当中,并接下来的步骤,是在iframe中找到元素并操作
#2)切换
driver.switch_to.frame("login_frame_qq")
#3)在iframe当中的html了
#4)回到默认的hrml页面内中,退出iframe
driver.switch_to.default_content()
#5)回到上一级的iframe
driver.switch_to.parent_frame()

 

   

posted on 2021-01-17 22:32  小肥羊要进步  阅读(545)  评论(0编辑  收藏  举报

导航