微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我有一个基于 4 个值的动态 xpath,如果我使用 OR 条件,xpath 看起来很大,还有其他方法来处理吗?

如何解决我有一个基于 4 个值的动态 xpath,如果我使用 OR 条件,xpath 看起来很大,还有其他方法来处理吗?

下面是替换选项变量中给定值的 XPath。

_OPTION_1 = "Average"
_OPTION_2 = "M"
_OPTION_3 = "Casual"
_OPTION_4 = "D"

_WIDTH_VALUE_XPATH = f"//mat-option/span[contains(text(),'{_OPTION_1}')] | //mat-option/span[contains(text(),'{_OPTION_2}')] | //mat-option/span[contains(text(),'{_OPTION_3}')] | //mat-option/span[contains(text(),'{_OPTION_4}')]"

解决方法

虽然您可以使用 or 代替联合运算符 | 来稍微缩短 xpath,但如果目标是 Python 代码的可读性,您可以使用三重引号使字符串更清晰。

_WIDTH_VALUE_XPATH = f'''
//mat-option/span[contains(text(),'{_OPTION_1}')] | 
//mat-option/span[contains(text(),'{_OPTION_2}')] | 
//mat-option/span[contains(text(),'{_OPTION_3}')] | 
//mat-option/span[contains(text(),'{_OPTION_4}')]
'''

,

为什么不是列表/列表理解?

options=["Average","M","Casual","D"]
xpath_list = [f"//mat-option/span[contains(text(),'{option}')]" for option in options]

这意味着无论您当前使用 _WIDTH_VALUE_XPATH 做什么,您都必须替换对 xpath_list 的检查。

例如if target_xpath in xpath_list...

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。