Python Selenium选择动态下拉框值并进行动态定位的方法

场景描述

现在要在模拟在输入框中输入会员名称,再点击加载出来的下拉框内容

遇到的问题

1、鼠标移开下拉框后,元素消失,如何选择下拉框内容

2、获取下拉框元素Xpath路径后,发现是一个动态的xpath,每次获取到的xpath值不同,如何定位

解决方法

问题1的解方法:

打开f12,切换到source标签,输入框输入将下拉框显示出来,立即点击||暂停按钮,通过源码暂停获取定位机会。

再点击元素选取,点击元素,即可定位,右击标签copy-Xpath,即可获取原生xpath。

本例中为/html/body/div[6]/ul/li/strong

问题2的解决方法:

将原生的Xpath写在代码调试过程中,发现当在页面输入相同内容,再选择下拉框内容后,下拉框的xpath变化了,每操作一次,下拉框的xpath都不一样

例如:

/html/body/div[6]/ul/li/strong

/html/body/div[12]/ul/li/strong

/html/body/div[13]/ul/li/strong

div的序号都不一样。

这就是遇到动态Xpath了,会导致元素定位失败,有时候找不到元素。

此时就要改为手动编写Xpath。

输入内容后,我要找<strong></strong>标签中文本值等于“yunduan”的选项,

编写的xPath为 //strong[text()='yunduan'],不管筛选出多少记录(不管取消再输入操作多少次),任意选一个点击都可以。

代码对比

#原代码

# 输入会员名称
driver.find_element(By.XPATH,'/html/body/div[2]/form/table[1]/tbody/tr[6]/td[2]/input[1]').send_keys("yunduan")
#选择下拉框内容
driver.find_element(By.XPATH,'/html/body/div[6]/ul/li/strong').click()



#修改后

# 输入会员名称
driver.find_element(By.XPATH,'/html/body/div[2]/form/table[1]/tbody/tr[6]/td[2]/input[1]').send_keys("yunduan")
#选择下拉框内容
driver.find_element(By.XPATH,'//strong[text()="yunduan"]').click()

总结:

元素定位不到,可能是遇到了动态xpath,改为手写xpath

  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值