ccccchimon 2022-09-22 15:00 采纳率: 25%
浏览 46

python用selenium爬虫下拉框如何定位

请问各位python用selenium爬虫遇到下拉框如何定位啊,如下图的搜索框

img


他的源码都是hidden,这种到底怎么选择啊,困扰好久好久了,各位可以教一下吗

img

  • 写回答

4条回答 默认 最新

  • 爱音斯坦牛 全栈领域优质创作者 2022-09-22 15:16
    关注

    这个需要用selenium做一个动作链,你人移动到哪个元素上?它会展开这个下拉框,你对应的这个动作链的动作就是移动到这个元素,移动到这个元素,这个元素下自然隐藏的下拉框自然就会显示出来,此时你在定位下拉框中的元素进行点击,就完全没有问题,下面我给你提供一个这样的案例,就是鼠标移动上去显示出来,再点击的!

    from selenium.webdriver.common.action_chains import ActionChains
    action = ActionChains(self.driver)   # 实例化一个动作链对象
    # 这里写下拉框顶级元素的xpath 例如:
    element = self.driver.find_element_by_link_text('车票')   
    # 鼠标移动到 '车票' 元素上的中心点
    action.move_to_element(element).perform()
    #  然后下拉框的内容就会显示出来,就可以点击了
    #点击'单程'
    self.driver.find_element_by_xpath('//*[@id="J-chepiao"]/div/div[1]/ul/li[1]/a').click()
    

    当然,如果你的展示方式是先点击一个按钮,才会展示下拉框中的内容,那么就不需要动作链,你只需要先点击顶层元素,然后判断一下当下层元素显示出来后,点击下层元素就行!过来过去都涉及到了一些selenium的深层知识,比如隐式等待显式等待,或者说是检测某个元素是否显示出来,以及动作链的用法等等!
    有帮助的话采纳一下哦

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 9月22日

悬赏问题

  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办