web自动化测试-第五讲: 三大切换

三大切换:窗口切换、iframe切换、alert切换

为什么要讲这三个切换呢?第四讲我们讲过,“Message: no such element: Unable to locate element”遇到这样的报错,很可能是页面加载过慢导致的,但是,导致这个报错的还可能是其他原因,比如:在跑web自动化测试时,还会有其他原因:

        第一种:遇到新开了一个窗口需要定位新窗口中的元素,定位失败

        第二种:web页面中嵌套ifram e中元素,定位失败

        第三种:alert弹框切换(原始的弹框,比较少用了),弹框出现后,如果不点击‘确定’按钮,页面的元素加载不出来,定位失败

一、窗口切换:driver.switch_to.window(driver.driver.window_handles[-1])

from selenium import webdriver

# 打开浏览器
driver = webdriver.Chrome()
# 浏览器最大化
driver.maximize_window()
# 打开一个网页
driver.get("http://www.baidu.com")
# 通过xpath找到需要操作的元素(天气按钮):元素定位
weather_button = driver.find_element('xpath', '//span[@class="show-icon-temp c-font-normal c-color-t"]')
# 点击天气按钮
weather_button.click()
# 获取当前所有窗口的窗口句柄,相当于窗口的id(每个窗口id是唯一的,并且每次打开会生成一个新的id)
print(driver.window_handles)  # 得到的是一个列表
# 切换窗口,最新打开的窗口的句柄会在列表的最后一个元素
driver.switch_to.window(driver.driver.window_handles[-1])
# 定位新打开窗口的元素
weather_button = driver.find_element('xpath', '//*[contains(text(),"广东")]')
# 关闭整个浏览器,并且关闭驱动chromedriver
driver.quit()

二、iframe切换

        1、自己先写一个html,嵌套iframe一个百度页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1 id="title">test</h1>
    <p>这个是一个测试页面</p>
    <iframe name="test_iframe" src="http://www.baidu.com" width="800px" height="600px"></iframe>
</body>
</html>

        2、定位iframe中的元素:

        切换iframe的方法:

                (1)driver.switch_to.frame('name属性')

                (2)a、先找到iframe这个元素:iframe = driver.find_element('xpath','//iframe')
                         b、再切换:driver.switch_to.frame(iframe)

                (3)通过索引切换:driver.switch_to.frame(0)

        定位完iframe中元素,需要切换回主页面:driver.switch_to.content()

        多层iframe,切换到上一级iframe:driver.switch_to.parent_frame()

"""
文件名:class_04_01.py
姓 名:瓜牛强强
日 期:2021/7/31
时 间:0:14
"""
from selenium import webdriver

# 打开浏览器
driver = webdriver.Chrome()
# 浏览器最大化
driver.maximize_window()
# 打开自己写的网页
driver.get("file:///E:/test/test.html")
# 在主页面中:通过id定位‘title’,可以定位到
driver.find_element('id', 'title')
# 在iframe页面中:嵌入了一个百度页面,定位百度页面中元素,需要先切换iframe
iframe = driver.find_element('xpath','//iframe')
driver.switch_to.frame(iframe)
# 在iframe页面中:定位元素
driver.find_element('id','kw')

# 关闭整个浏览器,并且关闭驱动chromedriver
driver.quit()

三、alert弹框切换:

        1、alert = driver.switch.alert

        2、alert.accept()

1、自己先写一个html,带有alert的弹窗

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1 id="title">test</h1>
    <p>这个是一个测试页面</p>
    <iframe name="test_iframe" src="http://www.baidu.com" width="800px" height="600px"></iframe>
    <script>
        alert("hello selenuim")
    </script>>
</body>
</html>

2、切换alert,并点击“确定”按钮

"""
文件名:class_04_01.py
姓 名:瓜牛强强
日 期:2021/7/31
时 间:0:14
"""
from selenium import webdriver

# 打开浏览器
driver = webdriver.Chrome()
# 浏览器最大化
driver.maximize_window()
# 打开自己写的网页
driver.get("file:///E:/test/test.html")
# 切换alert
alert = driver.switch.alert
# 点击“确定”按钮
alert.accept()
# 关闭整个浏览器,并且关闭驱动chromedriver
driver.quit()

面试题:在做web自动化测试中定位元素找不到的错误,有哪些原因?

学到这,你至少知道四种原因了吧

To be continue,点个关注,持续更新。。。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值