过滤get_attribute以获取项目结果

时间:2019-03-14 21:46:39

标签: python selenium get attributes

当前,我正在使用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]”)))]]

1 个答案:

答案 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