首页 > 其他 > 详细

selenium自动化中的三大切换

时间:2020-03-15 20:02:27      阅读:88      评论:0      收藏:0      [点我收藏+]

三大切换分为:窗口切换、iframe切换、alert弹框处理(非HTML弹框)      ps(使用的HTML文件这里获取,提取码:t0n7)

一、窗口切换

1、需要知道你要切换的窗口叫什么?--句柄。 获取当前会话浏览器打开的所有窗口句柄 

通过:driver.window_handles  -- 把句柄存储在 “列表” 中,按照窗口出现的循序。

2、切换过去:driver.seitch_to.window(window的句柄)。

3、进入了新的页面,元素操作都只针对新的页面。


from
selenium import webdriver import time 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("file:///E:/WebWebpageTest/page.html") driver.maximize_window() # 最大化浏览器 # 定位表达式,跳转新页面点击的元素 loc = (By.XPATH, //a[@id="ZCA"]) WebDriverWait(driver, 30).until(EC.visibility_of_element_located(loc)) # 点击元素出现新的页面 driver.find_element(*loc).click() # 新的窗口出现了 # 等待有新的窗口出现,再去切换窗口 time.sleep(0.5) # 有时候立即去获取窗口取不到值 # 获取所有窗口的句柄 wins = driver.window_handles print(所有的窗口句柄, wins) # 返回当前窗口的句柄 cur_win = driver.current_window_handle print(当前的窗口句柄是:, cur_win) # 切换到最新打开的窗口 driver.switch_to.window(wins[-1]) print(最新的窗口句柄是:, wins[-1]) # 定位表达式,新页面输入框元素 loc = (By.XPATH, //input[@id="userA"]) WebDriverWait(driver, 30).until(EC.visibility_of_element_located(loc)) # 在新的窗口输入数据 driver.find_element(*loc).send_keys(这是新窗口) # 查看成果 time.sleep(3) driver.quit()

 

技术分享图片

 

技术分享图片

 

 

二、iframe切换

iframe就是HTML页面里面嵌套另一个HTML页面,

如果你要操作的元素,在iframe当中,那么必要切换到iframe 

1、你的元素是否在iframe里面

2、找到这个iframe

3、切换到iframe 

通过查看路径就可以看到有两个HTML 和一个iframe,就说明3在2的里面,就需要切换iframe

技术分享图片

 

技术分享图片

 

 

 

切换iframe,支持传的三个参数 1、iframe元素的name,

               2、iframe元素的下标(从0开始),

               3、iframe对应的WebElement对象(通过元素的八大元素定位)

 

from selenium import webdriver
import time
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("file:///E:/WebWebpageTest/page.html")
driver.maximize_window()  # 最大化浏览器

# 切换iframe 三种类型的传递
driver.switch_to.frame(myframe1)  # name
# driver.switch_to.frame(0)  # 下标
# driver.switch_to.frame(driver.find_element_by_xpath(‘//iframe[@id="idframe1"]‘))  # 通过八大定位方式
# 切换完成之后,就是一个新的HTML页面里面的定位

# 定位表达式,页面输入框元素
loc = (By.XPATH, //input[@id="userA"])
WebDriverWait(driver, 30).until(EC.visibility_of_element_located(loc))
# 在窗口输入数据
driver.find_element(*loc).send_keys(切换到iframe内部)
# 查看成果
time.sleep(3)

# 切出来,直接切换到默认的主页面,最外层的HTML页面
driver.switch_to.default_content()
# 切到上一个iframe (多层嵌套)
# driver.switch_to.parent_frame()

loc = (By.XPATH, //input[@id="user"])
WebDriverWait(driver, 30).until(EC.visibility_of_element_located(loc))
# 在窗口输入数据
driver.find_element(*loc).send_keys(切换到默认的主页面)

driver.quit()

 

三、alert弹框处理

它不是HTML元素,是js弹框,不能使用F12定位

操作流程:非HTML元素

     使用 alert 类 ,操作元素导致非HTML元素出现

     1、切换到它

     2、将他关闭或其他操作

弹框的四个操作
al.dismiss() # 取消
al.accept() # 确定
print(al.text) # 获取弹出框的文本
send_keys # 弹出框输入

 

from selenium import webdriver
import time

driver = webdriver.Chrome()
driver.get("file:///E:/WebWebpageTest/page.html")
driver.maximize_window()  # 最大化浏览器

# 点击出现非HTML弹出框
driver.find_element_by_id(alert).click()
time.sleep(1)

# 切换弹框 需要接收返回的对象
al = driver.switch_to.alert

# 弹框的四个操作
print(al.text)  # 获取弹出框的文本
# al.dismiss()  # 取消
al.accept()  # 确定
# al.send_keys()  # 弹出框输入
# 暂停看操作
time.sleep(1)

driver.quit()

 

selenium自动化中的三大切换

原文:https://www.cnblogs.com/yongzhuang/p/12498547.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!