web自动化-单选框、复选框、下拉框定位操作

2023-11-09

一、前言

单选框和复选框的话,一般根据单选框按钮和复选框按钮去进行元素定位,如有iframe页面嵌套,则需要切换iframe,一般去定位的话,用八大元素定位的方法差不多就可以满足了。接下来将会讲解下拉框的操作,下拉框里面的元素支持多选、单选、支持鼠标点击等。并且还需要观察下拉框的元素是select/option还是ul/li。

二、单选框、复选框操作

网页的话 自己写了一个HTML页面,可以参考之前写的一篇文关于测试了解的HTML知识

import time
from selenium import webdriver

driver = webdriver.Chrome()
driver.get(
    "file:///D:/pycharm_project/pyUI/_js%E6%93%8D%E4%BD%9C%E5%92%8C%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0/check.html")

# 用xpath进行组合定位元素
driver.find_element("xpath", "//input[@name='radio' and @value='lol']").click()

time.sleep(2)
driver.quit()

三、下拉框操作

1、需要点击下拉框后,才可以定位里面的元素,可以直接点击,也可以通过鼠标Ctrl+点击进行勾多选,代码如下:

import time

from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome()
driver.get(
    "file:///D:/pycharm_project/pyUI/_js%E6%93%8D%E4%BD%9C%E5%92%8C%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0/check.html")

# 定位下拉框里面的元素,直接点击。由于自己写的HTM页面代码,不用先点击下拉框。
driver.find_element("xpath", "//option[@value='l']").click()
# 定位下拉框里面的元素,并赋值给变量,传入click()
el1 = driver.find_element("xpath", "//option[@value='w']")
el2 = driver.find_element("xpath", "//option[@value='m']")
# 由于下拉框可以多选 control + 点击,就是用了键盘的操作方法
# 按住ctrl +点击+点击+松开ctrl+执行
action = ActionChains(driver)
action.key_down(Keys.CONTROL).click(el1).click(el2).key_up(Keys.CONTROL).perform()
time.sleep(5)
driver.quit()



# 其他操作:
# 定位要选择的下拉框
s = driver.find_element("name", "myselect").click()
# 定位下拉框的元素 driver 改成s
# 元素调用find_element 直接找某个元素的子元素
s.find_element("xpath", "//option[@value='l']").click()

2、如果是select/option组合,则可以使用Select类来处理,代码如下:

from selenium import webdriver
from selenium.webdriver.support.select import Select

driver = webdriver.Chrome()
driver.get("file:///D:/pycharm_project/pyUI/_js%E6%93%8D%E4%BD%9C%E5%92%8C%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0/check.html")

# 定位要选择的下拉框,并赋值给变量s,传入Select类
s = driver.find_element("name","myselect")

# 源码中的语法 利用css选择器进行元素定位
# "option[value =%s]"  =="option[value =windows]"
myselect = Select(s)
# 全部勾选
myselect.select_by_value('w')
myselect.select_by_value('m')
myselect.select_by_value('l')

3、非select/option元素下拉框的操作

运用到了显性等待的操作

import time

from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait

driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
driver.maximize_window()

# 定位到设置元素 ,进行点击 展示下拉框里面的元素
driver.find_element("id","s-usersetting-top").click()

# 进行显性等待
WebDriverWait(driver,timeout=10,poll_frequency=0.3).until(EC.visibility_of_element_located(("xpath","//a[text()='高级搜索']")))
# 对等待到的元素进行定位再点击操作
driver.find_element("xpath",'//a[text()="高级搜索"]').click()
time.sleep(3)
driver.quit()

其中需要注意的点哈:("xpath","//a[text()='高级搜索']") 表带是需要括号括起来传入,否则汇报错,因为不括号的话,调用的方法不支持这么多参数,报错提示:TypeError: __init__() takes 2 positional arguments but 3 were given  TypeError: __init__()接受2个位置参数,但给出了3个  

四、总结

现代化框架下拉框选择的操作:

1、定位到input元素,直接输入,el.send_keys()

2、定位到 input 元素/父级(div) 进行点击操作 .clink()

3、然后,再定位选项元素

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

web自动化-单选框、复选框、下拉框定位操作 的相关文章

  • 以编程方式在网站上输入字符串

    我想知道如何或是否可以通过 iPhone 应用程序代码在网站的文本字段中输入内容 所以我想去一个网站 中间有一个文本字段 我想在那里输入一个特定的字符串 我怎样才能在 Swift 中做到这一点 或 Objective C 然后我会弄清楚它在
  • 如何使用 HTML 元素阻止 THREE.js 光线投射?

    我希望页面上的 HTML 元素阻止 THREE js 光线投射 我该如何执行此操作 我遇到的问题是 当用户单击打开的 DIV 元素时 光线投射会检索场景中的对象 它会检索 DIV 后面的对象 我不想在 DIV 打开时禁用光线投射 我纯粹希望
  • 从 iframe 关闭父弹出窗口

    在domain1 com 上 我有一个链接 可以打开domain2 com 的弹出窗口 弹出窗口中有一个 iframe 也托管在 domain2 com 上 在 iframe 中 我试图关闭弹出窗口 我似乎对如何做到这一点感到困惑 在 if
  • 使用 CSS 等高列

    我想对我的 CSS 表使用百分比 不幸的是 它对我不起作用 这段代码有什么问题 我应该使用 flexbox 而不是 table 吗 我想使用表格 因为我想要相同高度的列 ul list style none margin 0 display
  • 为什么 html 中的 AngularJS 错误没有显示在控制台中?

    Here s a fiddle http jsfiddle net 6y7odxmj 3 用于说明 当 ng click 指令 例如 调用未在控制器的 scope 或其父级 上定义的函数时 它会默默地失败 当我尝试调试网页时 这种行为令人抓
  • 对于 SEO 而言,.html 扩展名是否比 .php 和 .aspx 更好?

    对于 SEO 而言 html 扩展名是否比 php 和 aspx 更好 或者少扩展名的 url 比全部更好 该扩展对排名和所有 SEO 影响不大 您页面的扩展名可能不一定表明内容是如何生成的 PHP 或 ASPX 虽然通常具有动态内容 但始
  • 如何在jsp中使用javascript动态创建下拉框?

    我正在尝试动态创建下拉框 就像当我单击添加按钮时它必须创建新的下拉框 下拉列表还包含动态值 例如需要当前年份并且必须显示最多五年 请建议我这样做 谢谢 这是我尝试过的代码 JavaScript 代码 function Add var nam
  • GWT - 让 CellTable 单元格使用 HTML?

    我有一个 CellTable 我想将 HTML 代码放入单元格中 以下代码不起作用 空格已从输出中删除 TextColumn
  • 包含括号的变量会导致问题[重复]

    这个问题在这里已经有答案了 简单的事情 当单击按钮并将其写入文本字段时 我读取选择框的值 选择框
  • 延迟 HTML5:无效伪类直到第一个事件发生

    我最近发现 invalid伪类适用于required页面加载后立即生成表单元素 例如 如果您有以下代码
  • 如何在输入时格式化 contenteditable div?

    我正在尝试编写一个函数 允许 contenteditable div 在用户输入 div 时执行一些自动格式化 到目前为止我只能让它在 IE 中运行 有人可以帮助我吗 function formatOnKeyUp if window get
  • 如何使用 Jquery 或 Javascript 更改原始字符串中的 HTML 属性?

    我想获取一堆锚标记并确保它们全部在新选项卡中打开 我知道我应该做这样的事情 a attr target blank 但问题是我试图修改的 HTML 位于字符串变量中 参见示例 我在一个字符串中有一堆原始 HTML 如下所示 var rawH
  • 如何使 HTML 表格“类似于 Excel”可编辑多个单元格,即同时复制粘贴功能?

    我需要我的 HTML 表是可编辑的 以便用户插入的数据可以发送到服务器 但是由于表的大小 50行 如果我引入 用户将不方便逐一插入数据点contenteditable属性如下 table tr td div editable div td
  • Aurelia 以 PHP 传递的参数开头

    我需要在开始时将参数传递给 Aurelia 根据传递的值 应用程序将具有不同的状态 该应用程序被注入到使用 PHP 构建的页面上 因此最好的方法是使用 PHP 代码指定的参数启动它 有什么办法可以做到这一点吗 您可以在普通 JS 中访问的任
  • JavaFX HTMLEditor - 插入图像功能

    我正在使用 JavaFX 集成的 HTMLEditor 它具有的所有功能都很好 但我还需要具有在 HTML 文本中插入图像的功能 你知道我可以使用的一些来源吗 或者其他一些可以在 JavaFX 中使用的 HTML WYSIWYG 编辑器并且
  • jQuery 可以使用结束标签作为选择器吗?

    我对 jQuery 还很陌生 我遇到了这个 jQuery 代码 它使用 div div 作为选择器 div div html someString text 首先 我想知道它是否是一个合法的标签 因为div有一个结束标签 但我的主要问题 j
  • 如何根据子宽度设置 div 的宽度?

    我想使用 HTML 和 CSS 创建一个类似于 UI 的线程视图 聊天收件箱 http jsfiddle net 7mbaksvj http jsfiddle net 7mbaksvj 我的问题是 div 的宽度 它以固定宽度的形式出现 但
  • HTML5 Safari iOS 仅访问相机而不访问照片库

  • 如何在CSS网格系统中偏移div列

    有谁知道抵消前两个div位于侧行且具有类的 scol 3 12偏移量为offset 6 12 and offset 9 12位于我的网格系统的右侧jsFiddle http jsfiddle net c6R6t CSS body font
  • 如何让JS变量在页面刷新后保留值? [复制]

    这个问题在这里已经有答案了 是否可以永久更改 JavaScript 变量 例如 如果我设置变量 X 并使其等于 1 然后按钮的 onClick 将该变量更改为 2 如何使该变量在刷新页面时保持为 2 这是可能的window localSto

随机推荐

  • 菜刀连接图片一句话木马

    1 先制作图片一句话木马 找好一张图片如 fox jpg 并且准备好一句话脚本php文件fox php 在图片所在文件夹打开cmd命令行 执行命令 copy fox jpg b fox php a fox1 jpg 生成图片一句话文件fox
  • windows7 防火墙关于文件共享的设置

    WIN7自带防火墙的设置相较XP下有了较大的变化 近日在设置文件夹共享上遇到了一些小问题 后来解决了 过程如下 首先 在文件夹上右键 属性 共享 里 高级共享 共享此文件夹 然后给Everyone用户以读的权限 这一步和在XP下没什么区别
  • BigDecimal 前后端交互失去精度

    在Controller层通过 ResponseBody将返回数据自动转换成json时 不做任何处理 而直接传给前端的话 在BigDecimal长度大于17位 不包括小数点 会出现精度丢失 在Long长度大于17位时也会出现精度丢失的问题 解
  • C语言实现字典树

    leetcode 208的代码 include
  • 商用密码应用安全性评估测评过程指南_商用密码应用安全性评估的具体评估内容...

    如何合规 正确 有效使用商用密码 充分发挥商用密码在保障网络空间安全中的核心技术和基础支撑作用 关乎国家大局 关乎网络空间安全 关乎用户个人隐私 因此 要在保证商用密码应用大力推进和普及的同时 做好网络与信息系统的商用密码应用安全性评估 确
  • 前端系列之JavaScript(BOM对象)

    什么是BOM BOM browser object model 浏览器对象模型 window对象 全局对象 说明 所有的全局变量和全局方法都被归为window上
  • Mysql日期格式转化问题

    MySQL索引优化 MySQL慢查询优化 一文详解MySQL各种锁及MVCC的使用场景及原理 最近遇到一个需求 大致内容是查询近七天内所有设备每天的工作时间和 里面涉及到日期格式转化 子查询 分组查询等问题 较为复杂 以此记录 数据库内容
  • OpenCV-Python图像直方图计算calcHist函数详解、示例及图形呈现

    前往老猿Python博文目录 https blog csdn net LaoYuanPython 一 引言 在前面几篇直方图相关的文章中介绍了直方图均衡 直方图匹配 局部直方图处理 基于直方图统计信息进行图像增强处理等图像处理与直方图相关的
  • 【面试系列】对称二叉树

    题意 原题链接 代码 Definition for a binary tree node struct TreeNode int val TreeNode left TreeNode right TreeNode val 0 left nu
  • Java集合之NavigableMap与NavigableSet接口

    author lidx 本文接着上篇介绍SortedMap和SortedSet接口 介绍他们的扩展接口NavigableMap与NavigableSet接口 提供了针对给定搜索目标返回最接近匹配项的导航方法 SortedMap和Sorted
  • java.io.IOException: Invalid header signature; rea

    异常 java io IOException Invalid header signature read 4503608217567241 expected 2226271756974174256 資料來源 http hi baidu co
  • 基于SkyWalking实现SpringBoot在K8S中的链路跟踪实践

    一 安装SkyWalking服务 1 下载SkyWalking APM https skywalking apache org downloads 这里下载Distribution的v9 0 0版本tar并解压 2 进入bin目录分别启动o
  • 【linux】ssh 远程执行命令

    1 概述 转载并且补充 ssh 远程执行命令 SSH 是 Linux 下进行远程连接的基本工具 但是如果仅仅用它来登录那可是太浪费啦 SSH 命令可是完成远程操作的神器啊 借助它我们可以把很多的远程操作自动化掉 下面就对 SSH 的远程操作
  • IP包结构

    版本 Version 4位 IP版本号 包头长 IHL 4位 以4字节为单位 如0101表示IP包的包头长度20字节 服务类型 TOS Type of service 1字节 指示路由器如何处理该数据包 总长 Total Length 2字
  • STM32单片机采集模拟电压转换为数字信号(stm32cubemx+keil+proteus+c)

    本文参考了CSDN博主安迪西ADC模数转换的文章代码 作对正弦曲线 or比如温度压强等 的模数转换 0 3 3转0 4096 由于proteus virtual terminal难以输出单精度或双精度实数 故直接输出0 4096 若要转为电
  • 洛必达法则介绍及使用注意点

    洛必达法则是个好法则 我们都很喜欢用它 但稍不注意可能就落入陷阱了 尤其是考研的同学 出题老师可能会故意在细节上考察大家 所以本篇讲一下洛必达法则3大陷阱 提防着点总是好的 1 洛必达法则内容 2 粗略证明 注意 不是严谨证明 主要理解思路
  • ode45求解微分方程(MATLAB)

    首先介绍一下ode45的格式 t y ode45 odefun tspan y0 t y ode45 odefun tspan y0 options t y te ye ie ode45 odefun tspan y0 options so
  • 新手在Ubuntu 20.04系统中编译安装Snort+Barnyard+BASE的难点问题

    1 准备安装软件 准备阶段新手经常会下错版本导致安装失败 2 安装DAQ 2 0 7报错 核心问题 预编译时出现下面的报错信息 解决 apt install bison flex 接着 make编译软件 会继续报错 解决 aclocal a
  • webrtc 常用编译参数列表

    additional target cpus Current value from the default From build config ios ios sdk gni 58 If non empty this list must c
  • web自动化-单选框、复选框、下拉框定位操作

    一 前言 单选框和复选框的话 一般根据单选框按钮和复选框按钮去进行元素定位 如有iframe页面嵌套 则需要切换iframe 一般去定位的话 用八大元素定位的方法差不多就可以满足了 接下来将会讲解下拉框的操作 下拉框里面的元素支持多选 单选