当前,我正在使用get_attribute在加载时立即获取页面上所有data-id实例。但是我想找出的是如何过滤掉其中一些结果。特别是那些具有某些数据类型属性值的对象。反正我能做到吗?
ids = [item.get_attribute('data-id')for WebDriverWait(driver,30).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR,“ [data-id]”)))]] >
答案 0 :(得分:0)
您可以将if条件添加到列表理解中:
if item.get_attribute('data-type') == "yourValue"
它看起来像这样:
els = WebDriverWait(driver,30).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, "[data-id]")))
ids = [item.get_attribute('data-id')
for item in els if item.get_attribute('data-type') == "yourValue"]
编辑:
item.get_attribute('data-type')的值不是“ Knife”,而是“ Knife”。 (末尾有空格)
解决方案1:使用strip()删除空格:
if item.get_attribute('data-type').strip() == "Knife"
解决方案2:用于
if "Knife" in item.get_attribute('data-type')
解决方案3:添加一个空格!
if item.get_attribute('data-type') == "Knife "
EDIT2: 如果要匹配多个值,请使用:
accepted_type = ("Knife", "Knife2",...)
if item.get_attribute('data-type').strip() in accepted_type