Python3 Selenium自动化web测试 ==> 第九节 WebDriver高级应用 -- 操作select 和 alert
学习目的:
掌握页面常规元素的定位方法
场景:
网页正常的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()
难点分析:
初次使用的时候,需要多看内置方法
学习总结:
需要多操作,建立一个常用操作库参考
Python3 Selenium自动化web测试 ==> 第九节 WebDriver高级应用 -- 操作select 和 alert的更多相关文章
- Python3 Selenium自动化web测试 ==> 第八节 WebDriver高级应用 -- 结束Windows中浏览器的进程
学习目的: 掌握WebDriver的高级应用 正式步骤: # -*- coding:utf-8 -*- from selenium import webdriver from selenium.web ...
- Python3 Selenium自动化web测试 ==> 第一节 起始点之Python单元测试框架 unittest
前置步骤 Python版本:3.6.4 selenium版本:3.11.0 >>> import selenium >>> help(selenium) IDE:P ...
- Python3 Selenium自动化web测试 ==> 第二节 页面元素的定位方法 <上>
前置步骤: 上一篇的Python单元测试框架unittest,我认为相当于功能测试测试用例设计中的用例模板,在自动化用例的设计过程中,可以封装一个模板,在新建用例的时候,把需要测试的步骤添加上去即可: ...
- Python3 Selenium自动化web测试 ==> 第二节 页面元素的定位方法 -- iframe专题 <下>
学习目的: 掌握iframe矿建的定位,因为前端的iframe框架页面元素信息,大多时候都会带有动态ID,无法重复定位. 场景: 1. iframe切换 查看iframe 切换iframe 多个ifr ...
- Python3 Selenium自动化web测试 ==> 第七节 WebDriver高级应用 -- 浮动框中,单击选择某个关键字选项
学习目的: 了解WebDriver的高级应用 正式步骤: 测试Python3代码 # -*- coding:utf-8 -*- from selenium import webdriver from ...
- Python3 Selenium自动化web测试 ==> 第六节 WebDriver高级应用 -- 操作web页面的滚动条
学习目的: 掌握页面元素定位以外的其他重要知识点. 正式步骤: 测试Python3代码 # -*- coding:utf-8 -*- from selenium import webdriver fr ...
- Python3 Selenium自动化web测试 ==> 第五节 WebDriver高级应用 -- 使用JavaScript操作页面元素
学习目的: 中级水平技术提升 在WebDriver脚本代码中执行JS代码,可以解决某些 .click()方法无法生效等问题 正式步骤: Python3代码如下 # -*- coding:utf-8 - ...
- Python3 Selenium自动化web测试 ==> 第三节 常用WebDriver API使用示例上(24个API)
前置步骤: 安装selenium,chrome驱动,Python3.6 学习目的: 常见API的使用 涉及的API: step1: 访问一个网址 step2: 网页的前进和后退 step3: 刷新当前 ...
- Python3 Selenium自动化web测试 ==> 第十一节 WebDriver高级应用 -- 显示等待 + 二次封装
学习目的: 掌握显示等待 掌握二次封装 正式步骤: step1:显示等待的代码示例 # -*- coding:utf-8 -*- from selenium import webdriver from ...
随机推荐
- redis四种部署方式
1.单点 2.主从 3.哨兵 4.集群
- 使用EntityFramework6连接MySql数据库-db first方式
准备工具: VS2013.MySQL For VisualStudio 1.1.4.Connector/Net 6.8.3 程序包管理器执行命令: Install-Package EntityFram ...
- python--openCV--视频处理
编码格式 视频容器中,一般有视频和音频数据,它们采取的编码方式不一样. 视频常见的编码方式通常有: x264.h264.mpeg-4 音频常见的编码方式通常有: mp3.AAC.flac 编码的目的主 ...
- [Web Component] Allow External Styling of a Web Component's Shadow DOM
The Shadow DOM protects your components from style conflicts. The same protection also makes it hard ...
- 【leetcode】1269. Number of Ways to Stay in the Same Place After Some Steps
题目如下: You have a pointer at index 0 in an array of size arrLen. At each step, you can move 1 positio ...
- Luogu P4109 [HEOI2015]定价 贪心
思路:找规律?$or$贪心. 提交:1次 题解: 发现:若可以构成$X0000$,答案绝对不会再在数字最后把$0$改成其他数: 若可以构成$XX50...0$更优. 所以左端点增加的步长是增加的($i ...
- javascript中的class类 以及class的继承
在上面的章节中我们看到了JavaScript的对象模型是基于原型实现的,特点是简单,缺点是理解起来比传统的类-实例模型要困难,最大的缺点是继承的实现需要编写大量代码,并且需要正确实现原型链. 有没有更 ...
- 重写equals为啥需要重写hashCode
描述 以前一直记得重写equals要把hashCode也要重写了,但是一直也是没有搞明白, 最近在看一些东西,觉得有必要记录一下. 了解一下equals equals是Object类的方法, equa ...
- java中判断空字符串和null的判断方法
简单总结几个方法: 1.直观的: if(s == null ||"".equals(s)); //先判断是否对象,再判断是否是空字符串 2.比较字符串长度, 效率高, 比较绕: i ...
- git push and git pull
原文链接 git push 通常对于一个本地的新建分支,例如git checkout -b develop, 在develop分支commit了代码之后,如果直接执行git push命令,develo ...