热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【Selenium】Selenium自动化进阶Select模块使用说明

前言由于工作原因,更新慢了一点,最近终于抽出一点时间给大家继续更新Selenium系列,学习的脚步不能停止,希望小伙伴能多

前言

由于工作原因,更新慢了一点,最近终于抽出一点时间给大家继续更新Selenium系列,学习的脚步不能停止,希望小伙伴能多多支持。

这次文章属纯文本笔记分享,需要这次的视频教程的小伙伴可以点击并输入暗号:CSDN,这里面最近也已经整理好了自动化测试的不少资料,欢迎大家进入群聊领取
在这里插入图片描述
书接上文:


目录

  • 前言
  • 正文
  • 1.select
    • 1.认识 select
    • 2.二次定位
    • 3.直接定位
    • 4.Select 模块(index)
    • 5.Select 模块(value)
    • 6.Select 模块(text)
    • 7.Select 模块其它方法
    • 最终参考代码:
  • 2.alert\confirm\prompt
    • 前言
    • 1.认识 alert\confirm\prompt
    • 2.alert 操作
    • 3.confirm 操作
    • 4.prompt 操作
    • 5.select 遇到的坑
    • 最终参考代码
  • 总结


正文

本篇以百度设置下拉选项框为案例,详细介绍 select 下拉框相关的操作方法。


1.select


1.认识 select


  1. 打开百度-设置-搜索设置界面,如下图所示
    在这里插入图片描述
  2. 箭头所指位置,就是 select 选项框,打开页面元素定位,下方红色框框区域,
    可以看到 select 标签属性:



  3. 第二个选顷对应的 value 值就是"20":select_by_value(“20”)

参考代码

# coding:utf-8
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.select import Select
driver = webdriver.Firefox()
url = "https://www.baidu.com"
driver.get(url)
driver.implicitly_wait(20)
# 鼠标移动到“设置”按钮
mouse = driver.find_element_by_link_text("设置")
ActionChains(driver).move_to_element(mouse).perform()
driver.find_element_by_link_text("搜索设置").click()
# 通过value:select_by_value()
s = driver.find_element_by_id("nr")
Select(s).select_by_value("20 ")

6.Select 模块(text)

1.Select 模块里面还有一个更加高级的功能,可以直接通过选项的文本内容来定位。

2.定位“每页显示 50 条”:select_by_visible_text(“每页显示 50 条”)

参考代码

# coding:utf-8
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.select import Select
driver = webdriver.Firefox()
url = "https://www.baidu.com"
driver.get(url)
driver.implicitly_wait(20)
# 鼠标移动到“设置”按钮
mouse = driver.find_element_by_link_text("设置")
ActionChains(driver).move_to_element(mouse).perform()
driver.find_element_by_link_text("搜索设置").click()
# 通过 text:select_by_visible_text()
s = driver.find_element_by_id("nr")
Select(s).select_by_visible_text("每页显示50条")

7.Select 模块其它方法

1.select 里面方法除了上面介绍的三种,还有更多的功能如下
在这里插入图片描述

# 通过索引定位
select_by_index() :
# 通过 value 值定位
select_by_value() :
# 通过文本值定位
select_by_visible_text() :
# 取消所有选项
deselect_all() :
# 取消对应 index 选项
deselect_by_index() :
# 取消对应 value 选项
deselect_by_value() :
# 取消对应文本选项
deselect_by_visible_text() :
# 返回第一个选项
first_selected_option() :
# 返回所有的选项
all_selected_options() :

最终参考代码:

# coding:utf-8
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.select import Select
driver = webdriver.Firefox()
url = "https://www.baidu.com"
driver.get(url)
driver.implicitly_wait(20)
# 鼠标移动到“设置”按钮
mouse = driver.find_element_by_link_text("设置")
ActionChains(driver).move_to_element(mouse).perform()
driver.find_element_by_link_text("搜索设置").click()
# 通过 text:select_by_visible_text()
s = driver.find_element_by_id("nr")
Select(s).select_by_visible_text("每页显示 50 条")
# 分两步:先定位下拉框,再点击选项
s = driver.find_element_by_id("nr")
s.find_element_by_xpath("//option[@value='50']").click()
# 另外一种写法
driver.find_element_by_id("nr").find_element_by_xpath("//option[@valu
e='50']").click()
# 直接通过 xpath 定位
driver.find_element_by_xpath(".//*[@id='nr']/option[2]").click()
# 通过索引:select_by_index()
s = driver.find_element_by_id("nr")
Select(s).select_by_index(2)
# 通过 value:select_by_value()
s = driver.find_element_by_id("nr")
Select(s).select_by_value("20")

2.alert\confirm\prompt


前言

不是所有的弹出框都叫 alert,在使用 alert 方法前,先要识别出到底是不是
alert.
先认清楚 alert 长什么样子,下次碰到了,就可以用对应方法解决。
alert\confirm\prompt 弹出框操作主要方法有:

text:获取文本值
accept() :点击"确认"
dismiss() :点击"取消"或者叉掉对话框
send_keys() :输入文本值 --仅限于 prompt,在 alert 和 confirm 上没有输入


1.认识 alert\confirm\prompt


  1. 如下图,从上到下依次为 alert\confirm\prompt,先认清楚长什么
    样子,以后遇到了就知道如何操作了。
    在这里插入图片描述
  2. html 源码如下(有兴趣的可以 copy 出来,复制到 txt 文本里,后缀改成 html 就可以了,然后用浏览器打开)

<html>
<head>
<title>Alerttitle>
head>
<body>
测试菜鸟小家洛&#39;);"/>
"confirm(&#39;确定关注微信公众号&#xff1a;测试菜鸟小家洛&#39;);"/>&#61; prompt(&#39;请输入微信公众号:&#39;,&#39;测试菜鸟小家洛&#39;); document.write(name)
"/>
body>
html>

2.alert 操作


  1. 先用 switch_to_alert()方法切换到 alert 弹出框上
  2. 可以用 text 方法获取弹出的文本 信息
  3. accept()点击确认按钮
  4. dismiss()相当于点右上角 x&#xff0c;取消弹出框
    &#xff08;url 的路径&#xff0c;直接复制浏览器打开的路径&#xff09;

# coding:utf-8
from selenium import webdriver
import time
url &#61; "file:///C:/Users/admin/Desktop/testalert.html"
driver &#61; webdriver.Firefox()
driver.get(url)
time.sleep(4)
driver.find_element_by_id("alert").click()
time.sleep(3)
t &#61; driver.weitch_to_alert()
# 打印警告框文本内容
print t.text
# 点警告框确认按钮
t.accept()
# t.dismiss()相当于点x按钮.取消

3.confirm 操作


  1. 先用 switch_to_alert()方法切换到 alert 弹出框上
  2. 可以用 text 方法获取弹出的文本 信息
  3. accept()点击确认按钮
  4. dismiss()相当于点取消按钮或点右上角 x&#xff0c;取消弹出框
    &#xff08;url 的路径&#xff0c;直接复制浏览器打开的路径&#xff09;

# coding:utf-8
from selenium import webdriver
import time
url &#61; "file:///C:/Users/admin/Desktop/testalert.html"
driver &#61; webdriver.Firefox()
driver.get(url)
time.sleep(4)
driver.find_element_by_id("confirm").click()
time.sleep(3)
t &#61; driver.weitch_to_alert()
# 打印警告框文本内容
print t.text
# 点警告框确认按钮
t.accept()
# t.dismiss()相当于点x按钮.取消

4.prompt 操作


  1. 先用 switch_to_alert()方法切换到 alert 弹出框上
  2. 可以用 text 方法获取弹出的文本 信息
  3. accept()点击确认按钮
  4. dismiss()相当于点右上角 x&#xff0c;取消弹出框
  5. send_keys()这里多个输入框&#xff0c;可以用 send_keys()方法输入文本内容
    &#xff08;url 的路径&#xff0c;直接复制浏览器打开的路径&#xff09;

# coding:utf-8
from selenium import webdriver
import time
url &#61; "file:///C:/Users/admin/Desktop/testalert.html"
driver &#61; webdriver.Firefox()
driver.get(url)
time.sleep(4)
driver.find_element_by_id("confirm").click()
time.sleep(3)
t &#61; driver.weitch_to_alert()
# 打印警告框文本内容
print t.text
t.send_keys("hello selenium")
# 点警告框确认按钮
# t.accept()
# t.dismiss()相当于点x按钮.取消

5.select 遇到的坑


  1. 在操作百度设置里面&#xff0c;点击“保存设置”按钮时&#xff0c;alert 弹出框没有弹出来。&#xff08;Ie 浏览器是可以的&#xff09;
  2. 分析原因&#xff1a;经过慢慢调试后发现&#xff0c;在点击"保存设置"按钮时&#xff0c;由于前面的 select 操作后&#xff0c;失去了焦点
  3. 解决办法&#xff1a;在 select 操作后&#xff0c;做个 click()点击操作
    在这里插入图片描述

s &#61; driver.find_element_by_id("nr")
Select(s).select_by_visible_text("每页显示 20 条")
time.sleep(3)
s.click()

最终参考代码

# coding:utf-8
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.select import Select
import time
driver &#61; webdriver.Firefox()
url &#61; "https://www.baidu.com"
driver.get(url)
driver.implicitly_wait(20)
# 鼠标移动到“设置”按钮
mouse &#61; driver.find_element_by_link_text("设置")
ActionChains(driver).move_to_element(mouse).perform()
driver.find_element_by_link_text("搜索设置").click()
# 通过 text:select_by_visible_text()
s &#61; driver.find_element_by_id("nr")
Select(s).select_by_visible_text("每页显示 20 条")
time.sleep(3)
s.click()
driver.find_element_by_link_text("保存设置").click()
time.sleep(5)
# 获取 alert 弹框
t &#61; driver.switch_to_alert()
print t.text
t.accept()

总结

这一篇应该比较简单&#xff0c;Alert 相关的内容比较少&#xff0c;虽然有一些页面也有弹窗&#xff0c;但不是所有的弹窗都叫 alert。
alert 的弹出 框界面比较简洁&#xff0c;是调用的系统弹窗警告框&#xff0c;没花里胡哨的东西&#xff0c;还是很容易区分的。

以上资料笔记以整理到个人公众号【测试菜鸟小家洛】
也可点击暗号点击并输入暗号&#xff1a;CSDN领取资料文件

在这里插入图片描述


推荐阅读
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • IhaveconfiguredanactionforaremotenotificationwhenitarrivestomyiOsapp.Iwanttwodiff ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文讨论了在Spring 3.1中,数据源未能自动连接到@Configuration类的错误原因,并提供了解决方法。作者发现了错误的原因,并在代码中手动定义了PersistenceAnnotationBeanPostProcessor。作者删除了该定义后,问题得到解决。此外,作者还指出了默认的PersistenceAnnotationBeanPostProcessor的注册方式,并提供了自定义该bean定义的方法。 ... [详细]
  • 本文介绍了多因子选股模型在实际中的构建步骤,包括风险源分析、因子筛选和体系构建,并进行了模拟实证回测。在风险源分析中,从宏观、行业、公司和特殊因素四个角度分析了影响资产价格的因素。具体包括宏观经济运行和宏经济政策对证券市场的影响,以及行业类型、行业生命周期和行业政策对股票价格的影响。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 展开全部下面的代码是创建一个立方体Thisexamplescreatesanddisplaysasimplebox.#Thefirstlineloadstheinit_disp ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有