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

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

对于这种拥有二级框的选项无法定位,也不是<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()

注意事项:

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

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

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

最后的最后:

问题虽然是解决了,可是为啥二级选框要使用绝对路径,而日历却不行,有懂得的小伙伴吗?

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

  1. LayUI中实现上级下拉框动态加载下级下拉框js

    js代码: var form = layui.form, layer = layui.layer; form.on("select(上级)", function(data){ va ...

  2. 对于隐藏性质的非标准的动态 id 的下拉框,如何定位和选中

    今天,在页面上碰到一个非 select 标签的下拉框,打算进行定位和模拟选中. <input aria-invalid="false" autocomplete=" ...

  3. jquery动态生成的select下拉框,怎么设置默认的选中项?

    这两天都被这问题困扰,可能是我不太懂前端.我做layui表格行编辑,点击编辑按钮弹出layer,里边有一个民族的下拉框不能直接显示后台传过来的值.我把民族数组用jquery添加到了select里边,可 ...

  4. Jquery动态设置下拉框selected --(2018 08/12-08/26周总结)

    1.Jquery动态根据内容设置下拉框selected 需求就是根据下拉框的值动态的设置为selected,本以为很简单,网上一大推的方法,挨着尝试了之后却发现没有一个是有用的.网上的做法如下: &l ...

  5. 通过jquery来实现文本框和下拉框动态添加效果,能根据自己的需求来自定义最多允许添加数量,实用的jquery动态添加文本框特效

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. 前端下拉框选择和动态生成调用div

    进入到一个项目期中,一边做项目,一边学习其中用到的知识.这些知识都是零碎的,有数据库,有html,有js,还有django.趁周末时间,整理前面遇到过的前端相关的知识点. 下拉框选择 <html ...

  7. jquery div 下拉框焦点事件

    这章与上一张<jquery input 下拉框(模拟select控件)焦点事件>类似 这章讲述div的焦点事件如何使用 div的焦点事件与input的焦点事件区别在于 需要多添加一个属性: ...

  8. div模拟的下拉框特效

    随笔- 4 文章- 0 评论- 0 ? <style type="text/css"> body, ul, li { margin: 0; padding: 0; fo ...

  9. div模拟的下拉框特效jquery

    从网上找来的,感觉不错就拿来分享下 <style type="text/css"> body, ul, li { margin: 0; padding: 0; font ...

  10. 动态加载下拉框列表并添加onclick事件

    1.  js动态加载元素并设置属性 摘自(http://www.liangshunet.com/ca/201408/336848696.htm) <div id="parent&quo ...

随机推荐

  1. 隐藏tkinter弹出的创库

    1 import tkinter as tk 2 root = tk.Tk() 3 root.withdraw()

  2. shell命令-lsof

    前言 lsof是系统管理常用命令,其名指的是list open files,列出打开的文件,而在linux系统,一切皆文件. centos7安装:yum install -y lsof 获取网络信息 ...

  3. xfs文件系统核心架构介绍

    版权声明:本文为CSDN博主「瞧见风」的原创文章,遵循CC 4.0 BY-SA版权协议原文链接:https://blog.csdn.net/scaleqiao/article/details/5209 ...

  4. Ubuntu Linux 更换国内源

    Ubuntu的官方源对于国内用户来说是比较慢的,可以将它的源换成国内的源,用起来就快很多了. # Ubuntu server 环境 ubuntu@ubuntu:~$ sudo su - [ sudo ...

  5. 开源 SD-Small 和 SD-Tiny 知识蒸馏代码与权重

    最近,人工智能社区在开发更大.更高性能的语言模型方面取得了显著的进展,例如 Falcon 40B.LLaMa-2 70B.Falcon 40B.MPT 30B; 以及在图像领域的模型,如 SD2.1 ...

  6. JS遍历Json串并获取Key和Value

    //data为json串 for (var key in data) { console.log(key); console.log(data[key]); }

  7. Java开发面试--Redis专区

    1. 什么是Redis?它的主要特点是什么? 答: Redis是一个开源的.基于内存的高性能键值对存储系统.它主要用于缓存.数据存储和消息队列等场景. 高性能:Redis将数据存储在内存中,并采用单线 ...

  8. 拉普拉斯金字塔在多图HDR算法中的应用以及多曝光图像的融合算法简介。

    在SSE图像算法优化系列二十九:基础的拉普拉斯金字塔融合用于改善图像增强中易出现的过增强问题(一) 一文中我们曾经描述过基于几种高频融合法则的拉普拉斯金字塔融合算法,那里是主要针对2副图像的.实际的应 ...

  9. Springboot多种字段copy工具比较

    结论:推荐使用spring自带的copy工具,不能copy的手动set 1.springboot自带的BeanUtils.copyProperties package com.admin; impor ...

  10. Llama2-Chinese项目:2.1-Atom-7B预训练

      虽然Llama2的预训练数据相对于第一代LLaMA扩大了一倍,但是中文预训练数据的比例依然非常少,仅占0.13%,这也导致了原始Llama2的中文能力较弱.为了能够提升模型的中文能力,可以采用微调 ...