Web自动化测试之显示等待、下拉列表、弹窗、滚动条、frame切换、窗口切换、截图、验证码、cookie


今日目标

  • 能够记住显式等待的使用方法
  • 能够使用Select完成对下拉框的操作
  • 知道弹出框的处理方式了解如何操作滚动条
  • 能够实现frame的切换
  • 能够实现多窗口切换
  • 能够实现对浏览器窗口的截图操作
  • 知道验证码处理的方式
  • 了解如何使用Cookie实现登录

1. 显示等待

定义

  1. 设置显示等待针对一个元素,找到元素不会触发等待,直接执行下面语句
  2. 如果定位不到循环的去查找元素
  3. 规定时间差找不到, 抛出异常 – 超时异常:TimeoutException

语法

  1. 导包

    from selenium.webdriver.support.wait import WebDriverWait

  2. 显示等待 WebDriverWait

    WebDriverWait(driver, 10, poll_frequency=1).until(lambda x:x.find_element_by_name(“userA”))

  3. 抛出异常

    TimeoutException

代码演示

# 需求:打开注册A页面,完成以下操作
# 1).使用显示等待定位用户名输入框,如果元素存在,就输入admin
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from time import sleep

# 打开注册A
driver = webdriver.Firefox()
driver.get("http://127.0.0.1/auto/注册A.html")

# 定位元素 设置显示等待
username = WebDriverWait(driver, 10, 1).until(lambda x:x.find_element_by_name('userA'))
username.send_keys('admin')

# 关闭浏览器
sleep(3)
driver.quit()

显示等待和隐式等待区别:

  • 作用域:隐式等待作用于全部元素,显示等待作用于指定元素
  • 隐式等待直接driver调用,显示等待导包WebDriverWait
  • 隐式等待异常NoSuchElement,显示等待异常TimeoutException
  • 显示等待更灵活

2. 下拉列表

步骤:

  1. 导包

    from selenium.webdriver.support.select import Select

  2. 语法

    • 元素转为select对象

      select = Select(下拉列表页面元素)

    • 选择下拉列表内容

      • 索引:select.select_by_index(0开始)
      • value值:select.select_by_value(选择value值)
      • 文本内容:select.select_by_visible_text(文本内容)

代码演示:

from selenium import webdriver
from time import sleep
from selenium.webdriver.support.select import Select

# 打开注册A页面
driver = webdriver.Firefox()
driver.get("http://127.0.0.1/注册A.html")

# 定位下拉列表 -- select元素
ele_select = driver.find_element_by_id('userA')
selobj = Select(ele_select)
sleep(2)

# 根据索引定位深圳
selobj.select_by_index(3)
sleep(2)

# 根据value值定位上海
selobj.select_by_value('sh')
sleep(2)

# 根据可见文本内容定位广州
selobj.select_by_visible_text('A广州')
sleep(2)

# 关闭浏览器
driver.quit()

3. 弹窗

1. 弹窗的三种形式:

  • alert
  • confirm
  • prompt

2. 切换焦点到弹窗

alert = driver.switch_to.alert

3. 弹窗的操作

  • 确定:alert.accept()
  • 取消:alert.dismiss()
  • 获取本文内容:alert.text

4. 代码演示

  • alert
# 需求:打开注册A.html页面,完成以下操作:
# 1).点击 alert 按钮
# 2).关闭警告框
# 3).输入用户名:admin
from selenium import webdriver 
from time import sleep

# 1.打开注册A.html页面
driver = webdriver.Firefox()
driver.get('http://127.0.0.1/auto/%E6%B3%A8%E5%86%8CA.html')
driver.maximize_window()
sleep(3)

# 点击 alert 按钮
driver.find_element_by_id('alerta').click()

# 弹窗进行处理
alert = driver.switch_to.alert
sleep(2)

# 打印弹窗内容
text = alert.text
print(text)

# 点击确定
alert.accept()
sleep(2)

# 点击取消
alert.dismiss()
sleep(2)

# 输入用户名:admin
username = driver.find_element_by_id('userA')
usern
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值