学习目的:


  掌握页面常规元素的定位方法

场景:


  网页正常的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的更多相关文章

  1. Python3 Selenium自动化web测试 ==> 第八节 WebDriver高级应用 -- 结束Windows中浏览器的进程

    学习目的: 掌握WebDriver的高级应用 正式步骤: # -*- coding:utf-8 -*- from selenium import webdriver from selenium.web ...

  2. Python3 Selenium自动化web测试 ==> 第一节 起始点之Python单元测试框架 unittest

    前置步骤 Python版本:3.6.4 selenium版本:3.11.0 >>> import selenium >>> help(selenium) IDE:P ...

  3. Python3 Selenium自动化web测试 ==> 第二节 页面元素的定位方法 <上>

    前置步骤: 上一篇的Python单元测试框架unittest,我认为相当于功能测试测试用例设计中的用例模板,在自动化用例的设计过程中,可以封装一个模板,在新建用例的时候,把需要测试的步骤添加上去即可: ...

  4. Python3 Selenium自动化web测试 ==> 第二节 页面元素的定位方法 -- iframe专题 <下>

    学习目的: 掌握iframe矿建的定位,因为前端的iframe框架页面元素信息,大多时候都会带有动态ID,无法重复定位. 场景: 1. iframe切换 查看iframe 切换iframe 多个ifr ...

  5. Python3 Selenium自动化web测试 ==> 第七节 WebDriver高级应用 -- 浮动框中,单击选择某个关键字选项

    学习目的: 了解WebDriver的高级应用 正式步骤: 测试Python3代码 # -*- coding:utf-8 -*- from selenium import webdriver from ...

  6. Python3 Selenium自动化web测试 ==> 第六节 WebDriver高级应用 -- 操作web页面的滚动条

    学习目的: 掌握页面元素定位以外的其他重要知识点. 正式步骤: 测试Python3代码 # -*- coding:utf-8 -*- from selenium import webdriver fr ...

  7. Python3 Selenium自动化web测试 ==> 第五节 WebDriver高级应用 -- 使用JavaScript操作页面元素

    学习目的: 中级水平技术提升 在WebDriver脚本代码中执行JS代码,可以解决某些 .click()方法无法生效等问题 正式步骤: Python3代码如下 # -*- coding:utf-8 - ...

  8. Python3 Selenium自动化web测试 ==> 第三节 常用WebDriver API使用示例上(24个API)

    前置步骤: 安装selenium,chrome驱动,Python3.6 学习目的: 常见API的使用 涉及的API: step1: 访问一个网址 step2: 网页的前进和后退 step3: 刷新当前 ...

  9. Python3 Selenium自动化web测试 ==> 第十一节 WebDriver高级应用 -- 显示等待 + 二次封装

    学习目的: 掌握显示等待 掌握二次封装 正式步骤: step1:显示等待的代码示例 # -*- coding:utf-8 -*- from selenium import webdriver from ...

随机推荐

  1. redis四种部署方式

    1.单点 2.主从 3.哨兵 4.集群

  2. 使用EntityFramework6连接MySql数据库-db first方式

    准备工具: VS2013.MySQL For VisualStudio 1.1.4.Connector/Net 6.8.3 程序包管理器执行命令: Install-Package EntityFram ...

  3. python--openCV--视频处理

    编码格式 视频容器中,一般有视频和音频数据,它们采取的编码方式不一样. 视频常见的编码方式通常有: x264.h264.mpeg-4 音频常见的编码方式通常有: mp3.AAC.flac 编码的目的主 ...

  4. [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 ...

  5. 【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 ...

  6. Luogu P4109 [HEOI2015]定价 贪心

    思路:找规律?$or$贪心. 提交:1次 题解: 发现:若可以构成$X0000$,答案绝对不会再在数字最后把$0$改成其他数: 若可以构成$XX50...0$更优. 所以左端点增加的步长是增加的($i ...

  7. javascript中的class类 以及class的继承

    在上面的章节中我们看到了JavaScript的对象模型是基于原型实现的,特点是简单,缺点是理解起来比传统的类-实例模型要困难,最大的缺点是继承的实现需要编写大量代码,并且需要正确实现原型链. 有没有更 ...

  8. 重写equals为啥需要重写hashCode

    描述 以前一直记得重写equals要把hashCode也要重写了,但是一直也是没有搞明白, 最近在看一些东西,觉得有必要记录一下. 了解一下equals equals是Object类的方法, equa ...

  9. java中判断空字符串和null的判断方法

    简单总结几个方法: 1.直观的: if(s == null ||"".equals(s)); //先判断是否对象,再判断是否是空字符串 2.比较字符串长度, 效率高, 比较绕: i ...

  10. git push and git pull

    原文链接 git push 通常对于一个本地的新建分支,例如git checkout -b develop, 在develop分支commit了代码之后,如果直接执行git push命令,develo ...