如何在XPath属性中使用or条件匹配data-titlex或data-titley属性
XPath匹配自定义data属性的实现方法
XPath对自定义属性的匹配规则和class、href这类内置属性完全一致,直接在判断条件里用or拼接属性判断即可,不需要额外特殊语法。
- 最简匹配写法(直接匹配所有带
data-titlex或data-titley属性的a标签,覆盖你提到的两类元素):
//a[@data-titlex or @data-titley]
- 严谨匹配写法(同时绑定class校验,避免误匹配其他位置带这俩自定义属性的无关元素):
//a[(@class='class_name' and @data-titlex) or (@class='different_class_name' and @data-titley)]
匹配到元素后,因为两类标签的标题存在不同的自定义属性上,遍历元素时按需取值即可,Python+Selenium的参考实现如下:
# 定位所有目标a标签 target_links = driver.find_elements("xpath", "//a[@data-titlex or @data-titley]") all_titles = [] for link in target_links: # 优先读data-titlex属性,不存在则读取data-titley属性 title_val = link.get_attribute("data-titlex") or link.get_attribute("data-titley") if title_val: all_titles.append(title_val)
注意:属性名不要写拼写错误,你提到的两个自定义属性名末尾分别是x和y,书写时注意区分,否则会出现匹配不到元素、取值为空的问题。
内容的提问来源于stack exchange,提问作者swagkitten
相关产品推荐
相关产品推荐

