使用selenium定位input标签下的下拉框

先来看一下页面效果:是一个可输入的下拉列表

在这里插入图片描述

再来看一下下拉框的实现方式: 是用<ul><li>方式来实现的下拉框,不是select类型的,所以不能用传统的select定位方法。

在这里插入图片描述


在着手定位元素前一定一定要先弄清楚下拉列表的实现方式!!! 我一开始就是看到是下拉列表,想当然的采用select方法来定位,然后报错了QAQ ,大概意思是说该元素不支持使用select方法,然后才想着看一下实现代码,结果才发现下拉框字段是在<input>标签下的。


在这里插入图片描述

解决思路

 1、定位下拉框
 2、因为是<input>标签,因此使用send_keys方法给下拉框传值
 3、定位到下拉项
 4、点击下拉项
在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

在这里插入图片描述


代码实现

# 导入包
from selenium import webdriver
from selenium.webdriver.common.by import By
import time

# 定位下拉框
mcc_name = 'body > div.el-dialog__wrapper.created-small-margin > div > div.el-dialog__body > div > form > div:nth-child(5) > div > div > div > input'

# 使用send_keys方法给下拉框传值
industry = driver.find_element(By.CSS_SELECTOR, mcc_name)
industry.send_keys('零售业 / 综合零售 / 百货商店')
time.sleep(1)

# 定位下拉项
indus = 'body > div.el-popper.el-cascader__dropdown > div.el-cascader__suggestion-panel.el-scrollbar > div.el-scrollbar__wrap > ul > li'

# 点击下拉项   
driver.find_element(By.CSS_SELECTOR, indus).click()


常见问题

元素定位不到怎么办?

多尝试几种定位方式,这个不行换另一个试试,八种定位方式总有一种适合。

另外,不要太过依赖F12直接copy的selectorXpath 因为很有可能就是这个原因导致的!!!有很多时候直接copy过来拿去定位,就会定位不到,实在不行手动输入定位一下。

适当的添加延时时间。 很多时候操作太快也有可能导致元素定位不到,比如在这个例子的给下拉框传值点击下拉项之间,如果不添加延时time.sleep(1),也会导致下拉项元素定位不到。

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一般情况下,`input` 标签不会被用来实现下拉框。通常使用 `select` 标签来实现下拉框使用 `input` 标签来实现输入框。但是,有些页面可能会使用自定义的下拉框组件,这时候可能会在 `input` 标签上添加一些自定义的属性或者 CSS 样式,使其呈现出下拉框的样式。这种情况下,您需要查看页面源代码,找到对应的 `input` 标签,然后根据其属性或样式来定位元素。 如果页面上真的使用了自定义的下拉框组件,您需要使用 Selenium 提供的 `ActionChains` 类来模拟用户的鼠标操作,例如鼠标悬停、点击等,才能操作下拉框或选择其中的选项。以下是一个使用 `ActionChains` 类操作下拉框的示例代码: ```python from selenium.webdriver.common.action_chains import ActionChains # 定位下拉框元素 input_element = driver.find_element_by_id("dropdown-input") # 创建 ActionChains 对象 actions = ActionChains(driver) # 鼠标悬停在下拉框元素上 actions.move_to_element(input_element).perform() # 等待下拉框出现 time.sleep(1) # 定位选项元素 option_element = driver.find_element_by_xpath("//div[@class='dropdown-menu']//a[text()='选项1']") # 点击选项元素 option_element.click() ``` 这段代码中,我们首先定位 `input` 元素,然后创建 `ActionChains` 对象,鼠标悬停在 `input` 元素上,等待下拉框出现后再定位选项元素,并点击该元素。您需要根据具体的页面结构和下拉框组件的实现方式,来编写对应的代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值