今日目标
- 能够记住显式等待的使用方法
- 能够使用Select完成对下拉框的操作
- 知道弹出框的处理方式了解如何操作滚动条
- 能够实现frame的切换
- 能够实现多窗口切换
- 能够实现对浏览器窗口的截图操作
- 知道验证码处理的方式
- 了解如何使用Cookie实现登录
1. 显示等待
定义:
- 设置显示等待针对一个元素,找到元素不会触发等待,直接执行下面语句
- 如果定位不到循环的去查找元素
- 规定时间差找不到, 抛出异常 – 超时异常:TimeoutException
语法:
-
导包
from selenium.webdriver.support.wait import WebDriverWait
-
显示等待 WebDriverWait
WebDriverWait(driver, 10, poll_frequency=1).until(lambda x:x.find_element_by_name(“userA”))
-
抛出异常
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. 下拉列表
步骤:
-
导包
from selenium.webdriver.support.select import Select
-
语法
-
元素转为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