Selenium4+python被单独定义<div>的动态输入框和二级下拉框要怎么定位?

今天在做练习题的时候,发现几个问题捣鼓了好久,写下这篇来记录

问题一: 有层级的复选框无法定位到二级目录

对于这种拥有二级框的选项无法定位,也不是<select>属性.

我们查看下HTML,发现它是被单独封装在body内拥有动态属性的独立<div>,当窗口点击的时候才会触发.

解决: 

driver.find_element(By.XPATH,'//*[@id="app"]/div/div[2]/section/div/div/div[2]/form/div[1]/div/span/span').click()
sleep(1)
driver.find_element(By.XPATH,'/html/body/div[2]/ul[1]/li[2]').click()
sleep(1)
driver.find_element(By.XPATH,'/html/body/div[2]/ul[2]/li[2]').click()
sleep(1)

问题二:封装成<div>的动态日历无法定位

这个日历和上一个问题一样,也是被单独封装在最后的<div>里,当输入框被点击时才会弹出,此时使用 select方法和js删除属性都没法直接输入日期值.

使用问题一的解决方案:

发现还是定位不了,虽然在Chrome中定位是正确的,也能点击日历弹出,但是却无法定位到日历中.

解决方案:

此时就要通过需要点击的位置的父级标签去定位,而不能使用绝对路径

而在刚刚二级框中则是要使用绝对路径去定位.

有多个相同的属性的话,用find_elements复选属性来确定要哪个.

# 点击启动弹窗
self.driver.find_element(By.CSS_SELECTOR, 'input[placeholder="选择结束时间"]').click()
sleep(1)# 定位不到(绝对路径)
# driver.find_element((By.XPATH,'/html/body/div[5]/div[1]/div/div[3]/table[1]/tbody/tr[6]/td[4]/div/span')).click()# 使用父级标签定位
driver.find_elements(By.XPATH,'//tbody/tr[6]/td[4]')[0].click()

PYTHON 复制 全屏

注意事项:

在使用XPath定位的时候,会因为过快导致还没找到元素(添加智能等待(隐式等待)也会),导致python报错终止,所以适当在点击前增加强制等待(sleep)就能解决问题

当定位的标签有多个时,可用复选属性来定位(下标是从0开始的)

driver.find_elements(By.TAG_NAME, "标签名")[下标]

Web自动化测试全套实战教程:Python+Selenium4环境搭建

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/154086.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

十六、RabbitMQ快速入门

目录 一、在centos上下载MQ镜像 二、安装运行容器 三、登录进入MQ 1、添加一个新的用户 2、新建虚拟机 3、 为用户分配权限 四、RabbitMQ的基本概念 RabbitMQ中的几个概念: 五、常见消息模型 六、简单的消息生产与消费 1、消费者类 2、生产者类 3、基本消息队列的消…

数据库中的undo与redo的作用

undo与redo的作用 ​专栏内容&#xff1a; 手写数据库toadb 本专栏主要介绍如何从零开发&#xff0c;开发的步骤&#xff0c;以及开发过程中的涉及的原理&#xff0c;遇到的问题等&#xff0c;让大家能跟上并且可以一起开发&#xff0c;让每个需要的人成为参与者。 本专栏会定期…

xpath

xpath 使用 使用 from lxml import etree或者 from lxml import htmlet etree.XML(xml) et etree.HTML(html) res et.xpath("/book") # 返回列表项目Valueet.xpath(“/book”)/表示根节点/div/a子节点用/依次表示/name/text()text()取文本/book//nick//表示标签…

手动添加扩展到composer中

如果拓展包第三方没有提供composer安装方式&#xff0c;可以将扩展包手动添加到vendor目录下 将拓展包复制到vendor文件夹下 拓展包需要配置好composer.json文件中的autoload和包里面的命名空间 配置vendor/composer/autoload_psr4.php文件 xx\\xx\\ > array($vendorDir…

Kubernetes Gateway API 攻略:解锁集群流量服务新维度!

Kubernetes Gateway API 刚刚 GA&#xff0c;旨在改进将集群服务暴露给外部的过程。这其中包括一套更标准、更强大的 API资源&#xff0c;用于管理已暴露的服务。在这篇文章中&#xff0c;我将介绍 Gateway API 资源&#xff0c;并以 Istio 为例来展示这些资源是如何关联的。通…

C语言之sizeof 和 strlen 详细介绍

C语言之sizeof 和 strlen 文章目录 C语言之sizeof 和 strlen1. sizeof 和 strlen 的比较1.1 sizeof1.2 strlen1.3 sizeof 和 strlen 的对比 2. 练习2.1.1 一维数组2.1.2 字符数组 1. sizeof 和 strlen 的比较 1.1 sizeof sizeof是C语言中的一个关键字&#xff0c;计算的是变量…

设计模式常见面试题

简单梳理下二十三种设计模式&#xff0c;在使用设计模式的时候&#xff0c;不仅要对其分类了然于胸&#xff0c;还要了解每个设计模式的应用场景、设计与实现&#xff0c;以及其优缺点。同时&#xff0c;还要能区分功能相近的设计模式&#xff0c;避免出现误用的情况。 什么是…

python -opencv形态学操作

python -opencv形态学操作 1.服饰和膨胀 1.服饰和膨胀 opencv 腐蚀通过cv2.erode实现&#xff0c;膨胀通过cv2.dilate实现&#xff0c;看一下下面代码&#xff1a; from ctypes.wintypes import SIZE from multiprocessing.pool import IMapUnorderedIterator import cv2 i…

76基于matlab的免疫算法求解配送中心选址问题,根据配送地址确定最佳配送中心地址位置。

基于matlab的免疫算法求解配送中心选址问题&#xff0c;根据配送地址确定最佳配送中心地址位置。数据可更换自己的&#xff0c;程序已调通&#xff0c;可直接运行。 76matlab免疫算法配送中心选址 (xiaohongshu.com)

git 将本地已有的一个项目上传到新建的git仓库的方法

将本地已有的一个非git项目上传到新建的git仓库的方法一共有两种 一、 克隆拷贝 第一种方法比较简单&#xff0c;直接用把远程仓库拉到本地&#xff0c;然后再把自己本地的项目拷贝到仓库中去。然后push到远程仓库上去即可。此方法适用于本地项目不是一个git仓库的情况。 具…

泛型进阶:通配符

基本概念 对泛型不了解的可以看这篇博客&#xff1a;数据结构前瞻-CSDN博客 一般来说&#xff0c;&#xff1f;在泛型里的使用就是通配符 看看下面的代码 class Message<T> {private T message ;public T getMessage() {return message;}public void setMessage(T m…

go类型断言类型转换

类型断言 断言 在现代化 程序中 有助于 终止代码 , 防止 更大的 错误产生 package mainimport "fmt"func main() {var i interface{} "hello"s : i.(string)fmt.Println(s)s, ok : i.(string)fmt.Println(s, ok)f, ok : i.(float64)fmt.Println(f, ok)f…

网络协议头分析及抓包三次挥手四次握手

数据的封装与传递过程 思考&#xff1a; 应用层调用send后&#xff0c;是如何把数据发送到另一台机器的某个进程的。接收的设备收到数据包后&#xff0c;如何处理给应用层&#xff1f; MTU &#xff1a; Maximum Transmit Unit 最大传输单元 物理接口&#xff08;数据链路层&am…

android的通知使用

在 Android 中&#xff0c;通知&#xff08;Notification&#xff09;是一种在状态栏显示消息的方式&#xff0c;通常用于向用户展示应用程序的重要信息、事件或更新。以下是一个简单的示例&#xff0c;演示如何在 Android 应用程序中使用通知&#xff1a; import android.app…

Lightsail VPS 实例在哪些方面胜过 EC2 实例?

文章作者&#xff1a;Libai 引言 Lightsail VPS 实例和 EC2 实例是云计算领域中两种受欢迎的技术。虽然两者都提供虚拟服务器解决方案&#xff0c;但了解 Lightsail VPS 实例在哪些方面胜过 EC2 实例非常重要。在本文中&#xff0c;我们将探讨这两种技术之间的关键区别&#x…

如何调用本地 json 文件数据

文章目录 如何调用本地 json 文件数据1. 使用场景2. 步骤 如何调用本地 json 文件数据 1. 使用场景 使用场景&#xff1a;当无数据接口时&#xff0c;需要调用自己写的 json 文件&#xff0c;请求数据。 2. 步骤 在 public 文件夹下&#xff0c;新建一个存放 json 数据的文件…

CI/CD - jenkins

目录 一、部署 1、简介 2、部署 二、配置 三、实时触发 四、自动化构建docker镜像 五、通过ssh插件交付任务 六、添加jenkins节点 七、RBAC 八、pipeline 九、jenkins结合ansible参数化构建 1、安装ansible 2、新建gitlab项目 3、jenkins新建项目playbook 一、部…

choices参数的使用、MVC和MTV的模式、创建表对表关系的三种创建方式

【1】choices参数的使用 应用场景&#xff1a;针对表中可能列表完全的字段&#xff0c;采用choices参数 例如&#xff1a;性别&#xff0c;代码如下 # 1.创建一张表class gender_info(models.Model):name models.CharField(max_length32)password models.CharField(max_lengt…

大数据题目的解题技巧

目录 大数据题目的技巧总括 实例精析 实例一 实例二 实例三 大数据题目的技巧总括 &#xff08;1&#xff09;哈希函数可以把数据按照种类均匀分流&#xff1b; &#xff08;2&#xff09;布隆过滤器用于集合的建立与查询&#xff0c;并可以节省大量空间&#xff1b; &…

ubuntu 安装 gparted

前提环境&#xff1a; 阿里云的源。 sudo apt update sudo apt upgrade sudo apt install gparted 搜索&#xff1a;