问题描述
下面是替换选项变量中给定值的 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...