Python3 Selenium自动化web测试 ==> 第九节 WebDriver高级应用 -- 操作select 和 alert
2024-09-05 07:04:00
学习目的:
掌握页面常规元素的定位方法
场景:
网页正常的select元素下拉框常规方法和select专属方法
正式步骤:
step1:常规思路select页面元素定位
处理HTML代码截图
# -*- coding:utf-8 -*-
from selenium import webdriver
import time
from selenium.webdriver.common.action_chains import ActionChains
#常规select方法:百度首页设置搜索结果显示条目数
url = "https://www.baidu.com"
dr = webdriver.Chrome()
dr.get(url)
# dr.find_element_by_link_text('设置').click()
# dr.find_element_by_class_name("setpref").click()
# time.sleep(1)
# dr.find_element_by_xpath('//*[@id="nr"]/option[3]').click()
#常规方法二:鼠标移动悬浮到设置按钮上点击搜索设置
mouse = dr.find_element_by_link_text('设置')
ActionChains(dr).move_to_element(mouse).perform()
dr.find_element_by_class_name("setpref").click()
time.sleep(1)
dr.find_element_by_xpath('//*[@id="nr"]/option[3]').click() time.sleep(3)
dr.close()#close是退出当前窗口,quit是退出整个dr进程
step2:Select专有方法,即selenium内置方法
处理HTML代码截图
解决方案:
# -*- coding:utf-8 -*-
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.select import Select
import time url = 'https://www.baidu.com'
dr = webdriver.Chrome()
dr.get(url)
dr.find_element_by_link_text('设置').click()
dr.find_element_by_class_name("setpref").click()
time.sleep(1)
#method_1
s1 = dr.find_element_by_id('nr')
Select(s1).select_by_visible_text('每页显示50条')
time.sleep(3) #method_2
s2 = dr.find_element_by_id('nr')
Select(s2).select_by_value('')
time.sleep(3) #method_3
s3 = dr.find_element_by_id('nr')
Select(s3).select_by_index('')
time.sleep(1) dr.quit()
step3: 处理alert弹出框
处理情景截图,需要点击“确定”按钮,但此按钮无相应的html元素
解决方案:
# -*- coding:utf-8 -*-
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.select import Select
import time
"""
如果弹出有弹出框需要你输入内容,那么就要使用定位元素后的send_keys()来输入内容
弹出框的确定可以按F12来查看页面元素,如果有对应的HTML元素,则正常定位,但是需要切换句柄才能操作
"""
url = 'https://www.baidu.com'
dr = webdriver.Chrome()
dr.get(url)
dr.find_element_by_link_text('设置').click()
dr.find_element_by_class_name("setpref").click()
time.sleep(1) #此步骤必须加等待时间
dr.find_element_by_link_text("保存设置").click()
# time.sleep(1)
test_alert = dr.switch_to.alert() # 切换到alert
def alert_display():
try:
t = test_alert.text
print(t)
return True
except:
return False
if alert_display():
test_alert.accept() #accept表示点击确定
test_alert.dismiss()#dismiss表示不接受弹出框
else:
print("alert未弹出") dr.quit()
难点分析:
初次使用的时候,需要多看内置方法
学习总结:
需要多操作,建立一个常用操作库参考
最新文章
- MVVM模式解析和在WPF中的实现(三)命令绑定
- 求1...n中因子最多的数
- 最简单的基于JSP标准标签库的增删改查
- 一款开源且功能强大的C#甘特图控件.NET Winforms Gantt Chart Control
- HTTP 错误 500.24 - Internal Server Error的解决方法
- Tomcat 长连接与短连接性能测试
- JS对json对象的调用成员2种方式
- C语言函数返回数组
- c#操作XML文件的通用方法
- Android studio错误及解决办法
- 电容式触摸控制器PCB布局
- 经常使用MD5算法代码
- HDU1237 简单的计算器 【堆】+【逆波兰式】
- php获取文件名
- java较全的面试题
- 延迟实例化 Lazy<;T>;
- hdu 2044 递推
- 6.3 Query 语句对系统性能的影响
- [GXOI/GZOI2019]宝牌一大堆
- 二十二:制作app的时候超出部分不能滑动
热门文章
- Path variable [contentHash:8] not implemented in this context: styles.[contentHash:8].css
- grep匹配命令
- TypeError: Cannot read property &#39;$$&#39; of undefined at HTMLElement._attached.wx.getPlatform._touchstartHandlerForDevtools
- BZOJ1101——莫比乌斯函数&;&;入门
- BZOJ 2458: [BeiJing2011]最小三角形 (分治)
- Spring bean 实现InitializingBean和DisposableBean接口实现初始化和销毁前操作
- 并发编程入门(一): POSIX 使用互斥量和条件变量实现生产者/消费者问题
- Go中&;和*的区别
- addEventListener 事件监听器 冒泡事件)
- Hdu 5248