web自动化测试-selenium-03_下拉选择框、弹出框、滚动条操作
文章目录
- 一、下拉选择框操作
- Select 类
- ⭐ 通过下标形式访问
- ⭐ 通过value值访问
- ⭐ 通过显示文本切换
- 二、弹出框
- 弹出框处理方法
- 三、滚动条
一、下拉选择框操作
下拉框就是HTML中<select>元素
案例:
需求:使用“注册A.html”页面,完成对城市的下拉框的操作。
- 选择“广州”
- 暂停2秒,选择“上海”
- 暂停2秒,选择“北京”
方式一:使用CSS定位
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleepdriver = webdriver.Chrome()url = r"E:\CODE\test_study\web_source\day01\注册A.html"
driver.get(url)try:# 最大化浏览器driver.maximize_window()# 隐式等待driver.implicitly_wait(30)# 暂停2秒sleep(2)# 定位上海driver.find_element(By.CSS_SELECTOR,"[value='sh']").click()sleep(2)# 定位广州driver.find_element(By.CSS_SELECTOR,"[value='gz']").click()sleep(2)finally:driver.quit()
Select 类
Select类是Selenium 为操作select标签特殊封装的。
from selenium.webdriver.support.select import Select
实例化对象:select = Select(element)
element:<select>标签对应的元素,通过元素定位方式获取。
driver.find_element_by_id("selectA")
操作方法:
select_by_index(index) | 根据option索引来定位,从0开始 |
|---|---|
select_by_value(value) | 根据option属性 value值来定位 |
select_by_visible_text(text) | 根据option显示文本来定位 |
⭐ 通过下标形式访问
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Select
from time import sleepdriver = webdriver.Chrome()url = r"E:\CODE\test_study\web_source\day01\注册A.html"
driver.get(url)try:'''步骤:1.导入包 Select类2.获取Select对象匿名:Select(element).select_by_index(1) 实名:select = Select(element)调用:select.select_by_index(1)'''# 通过下标形式访问el = driver.find_element(By.CSS_SELECTOR,'#selectA')sleep(2)Select(el).select_by_index(1)sleep(2)Select(el).select_by_index(2)sleep(2)finally:driver.quit()
⭐ 通过value值访问
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Select
from time import sleepdriver = webdriver.Chrome()url = r"E:\CODE\test_study\web_source\day01\注册A.html"
driver.get(url)try:el = driver.find_element(By.CSS_SELECTOR,'#selectA')sleep(2)# 通过 value 值访问sel = Select(el)sel.select_by_value('sh')sleep(2)sel.select_by_value('gz')sleep(2)finally:driver.quit()
⭐ 通过显示文本切换
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Select
from time import sleepdriver = webdriver.Chrome()url = r"E:\CODE\test_study\web_source\day01\注册A.html"
driver.get(url)try:el = driver.find_element(By.CSS_SELECTOR,'#selectA')# 通过显示文本切换sleep(2)Select(el).select_by_visible_text('A上海')sleep(2)Select(el).select_by_visible_text('A广州')sleep(2)finally:driver.quit()
二、弹出框
alert | 警告框 |
|---|---|
confirm | 确认框 |
prompt | 提示框 |
案例:
打开注册A.html页面,完成以下操作:
- 点击 alerta 按钮
- 关闭警告框
- 输入用户名:admin
我们先来看看这个代码:
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleepdriver = webdriver.Chrome()url = r"E:\CODE\test_study\web_source\day01\注册A.html"
driver.get(url)try:driver.find_element(By.CSS_SELECTOR,'#alerta').click()sleep(2)driver.find_element(By.CSS_SELECTOR,'#userA').send_keys('admin')sleep(2)finally:driver.quit()
结果:
按钮被点击后,弹出警告框,而接下来输入用户名的语句没有生效。
是什么问题导致的?
如何处理警告框?
弹出框处理方法
-
获取弹出框对象
alert = driver.switch_to.alert -
调用
①alert.text——> 返回alert/confirm/prompt中的文字信息
②alert.accept()——>接受对话框选项
③alert.dismiss()——>取消对话框选项
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleepdriver = webdriver.Chrome()url = r"E:\CODE\test_study\web_source\day01\注册A.html"
driver.get(url)try:driver.find_element(By.CSS_SELECTOR,'#alerta').click()sleep(2)alert1 = driver.switch_to.alertalert1.accept()driver.find_element(By.CSS_SELECTOR,'#userA').send_keys('admin')sleep(2)finally:driver.quit()
三、滚动条
滚动条:一种可控制页面显示范围的组件。
为什么要学习滚动条操作?
① 在HTML页面中,由于前端技术框架的原因,页面元素为动态显示,元素根据滚动条的下拉而被加载;
② 页面注册同意条款,需要滚动条到最底层,才能点击同意。
实现方式:
① 设置JavaScript脚本控制滚动条
hs = "window.scrollTo(0,1000)"
(0:左边距;1000:上边距;单位:像素)
② Selenium 调用执行 JavaScript 脚本的方法
driver.execute_script(js)
案例:
打开注册页面A,暂停2秒后,滚动条拉到最底层。
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleepdriver = webdriver.Chrome()url = r"E:\CODE\test_study\web_source\day01\注册A.html"
driver.get(url)try:sleep(2)# 设置js控制滚动条语句js = 'window.scrollTo(0, 10000);'# 调用执行js语句方法driver.execute_script(js)sleep(2)finally:driver.quit()
