您当前的位置:首页 > 计算机 > 编程开发 > Python

Selenium xpath无法解析的如何处理

时间:04-30来源:作者:点击数:

一、问题描述

  • Xpath无法解析的原因
    1. 使用selenium加载时没有加入等待时间,导致页面元素无法加载xpath无法解析
    2. xpath语句未能准确定位
    3. 如果xpath无法解析到怎么办
    4. xpath点击失效(报错:该元素不是可点击元素)(客户端渲染,需要研究分析js代码实现同等效果的操作;或者通过火狐浏览器对js代码点击事件进行研究)

二、解决办法

1

​ <1> 用time.sleep(3)方法休眠等待

​ <2> 用显示等待或隐式等待

2

​ <1> 使用google插件XpathHelper定位

​ <2> 在Chrome浏览器中按F12打开调试模式,在Elements页面按Ctrl + F进行搜索定位

3

  • 情景一:页面不规则
    <1> 待页面加载完毕后,通过driver.page_source方法获取页面源码,通过正则匹配进行定位抓取
  • 情景二:页面规则
    <1> 复制chrome full xpath 绝对定位
    <2> 通过部分唯一标签或者元素部分绝对定位(元素唯一的情况下)
    <3> 用过js进行元素获取

4

​ <1> 用过js进行元素获取

​ <2> 通过键盘的Enter\上下左右\Tab按钮属性等其他按键操作定位

键值 解释
send_keys(Keys.BACK_SPACE) 删除键BackSpace
send_keys(Keys.SPACE) 空格键Space
send_keys(Keys.TAB) 制表键Tab
send_keys(Keys.ESPACE) 回退键Esc
send_keys(Keys.ENTER) 回车键Enter
send_keys(Keys.CONTROL,‘a’) 全选Ctrl+A
send_keys(Keys.CONTROL,‘c’) 复制CTRL+C
send_keys(Keys.CONTROL,‘x’) 剪切CTRL+X
send_keys(Keys.CONTROL,‘v’) 粘贴Ctrl+V
send_keys(Keys.F1) 键盘F1
send_keys(Keys.F12) 键盘F12

三、高级Xpath用法(扩展延伸)

1、 模糊查询

  • //ul/li[text()=“经验教程”] --全文字匹配
  • self.driver.find_element_by_link_text()
  • xpath(’//div[contains(@class,“a”)]’) #它会取得所有class为a的元素
  • xpath(’//div[contains(@class,“a”) and contains(@class,“b”)]’) #它会取class同时有a和b的元素
  • //a[contains(text(), “搜索”)] --模糊文字匹配
  • //li[contains,(.,‘单次预约’)]
  • //div[contains(@class, ‘demo’)] 【特殊元素标签模糊匹配用法】
  • //div[contains(@class, ‘demo’) and contains(@class, ‘other’)] 【多个元素的组合模糊定位】

2、常用解析

  • 解析文字:post_time = selector.xpath(’//div[@class=“video-data”]/span/text()’)
  • 解析结果:[‘295播放\xa0·\xa0’, ‘0弹幕’, ‘2020-12-05 09:00:01’]
  • 普通解析
    extract() 返回一个包含有字符串的列表,配合[0]使用
    extract_first() 返回列表中的第一个字符串,列表为空没有返回None
    get() 提取列表中第1个文本内容(等同于extract_first())
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门