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

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

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

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

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

解决:
python 复制代码
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复选属性来确定要哪个.

python 复制代码
# 点击启动弹窗
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, "标签名")[下标]


【下面是我整理的2023年最全的软件测试工程师学习知识架构体系图】


一、Python编程入门到精通

二、接口自动化项目实战

三、Web自动化项目实战

四、App自动化项目实战

五、一线大厂简历

六、测试开发DevOps体系

七、常用自动化测试工具

八、JMeter性能测试

九、总结(尾部小惊喜)

生命不息,奋斗不止。每一份努力都不会被辜负,只要坚持不懈,终究会有回报。珍惜时间,追求梦想。不忘初心,砥砺前行。你的未来,由你掌握!

生命短暂,时间宝贵,我们无法预知未来会发生什么,但我们可以掌握当下。珍惜每一天,努力奋斗,让自己变得更加强大和优秀。坚定信念,执着追求,成功终将属于你!

只有不断地挑战自己,才能不断地超越自己。坚持追求梦想,勇敢前行,你就会发现奋斗的过程是如此美好而值得。相信自己,你一定可以做到!

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

相关推荐
专注VB编程开发20年几秒前
VB.NET关于接口实现与简化设计的分析,封装其他类
java·前端·数据库
小妖66610 分钟前
css 中 content: “\e6d0“ 怎么变成图标的?
前端·css
L耀早睡1 小时前
mapreduce打包运行
大数据·前端·spark·mapreduce
咖啡の猫1 小时前
JavaScript基础-创建对象的三种方式
开发语言·javascript·ecmascript
HouGISer1 小时前
副业小程序YUERGS,从开发到变现
前端·小程序
outstanding木槿1 小时前
react中安装依赖时的问题 【集合】
前端·javascript·react.js·node.js
小吕学编程2 小时前
Jackson使用详解
java·javascript·数据库·json
霸王蟹2 小时前
React中useState中更新是同步的还是异步的?
前端·javascript·笔记·学习·react.js·前端框架
霸王蟹2 小时前
React Hooks 必须在组件最顶层调用的原因解析
前端·javascript·笔记·学习·react.js
专注VB编程开发20年2 小时前
asp.net IHttpHandler 对分块传输编码的支持,IIs web服务器后端技术
服务器·前端·asp.net