Python Selenium如何使用get_attribute获取无data_value属性的数字值
Selenium获取无自定义属性纯数字元素内容解决方案
核心问题说明
现有代码存在两处问题:
- 调用
get_attribute()方法时未传入目标属性名,属于语法错误,无法返回有效结果 - 待提取的纯数字是DOM节点内部的渲染文本,不属于
data_value这类自定义属性值,无需通过属性查询方法获取
具体解决方法
方案1:直接获取可见文本(优先使用)
绝大多数场景下直接调用元素的text属性即可拿到渲染完成的纯数字内容,修改代码如下:
target_ele = nav.find_element_by_xpath('/html/body/main/div[2]/div[2]/ng-view/div/div[2]/div[1]/div[1]/div/div/div/div[2]/div[2]/div/div[1]/div/div[6]/div') primeiro_value = target_ele.text
拿到的返回值默认是字符串格式,如需数值计算可通过int()或float()方法转换格式
方案2:获取节点内置文本属性(适配隐藏文本场景)
如果方案1返回空值,说明内容为非可见状态渲染,可通过get_attribute获取节点内置的textContent或innerText属性:
target_ele = nav.find_element_by_xpath('/html/body/main/div[2]/div[2]/ng-view/div/div[2]/div[1]/div[1]/div/div/div/div[2]/div[2]/div/div[1]/div/div[6]/div') # 优先尝试textContent primeiro_value = target_ele.get_attribute('textContent') # 若返回为空可替换为innerText # primeiro_value = target_ele.get_attribute('innerText')
优化建议
当前使用的绝对路径XPath稳定性极差,页面结构稍有变动就会定位失败,建议改用相对路径结合元素的class、id、相邻节点特征编写定位表达式,提升代码鲁棒性。
内容的提问来源于stack exchange,提问作者Leandro Contreiras Tavares
相关产品推荐
相关产品推荐

