【问题标题】:How to count the number of attributes whose value is lager than 0 in Selenium Python?如何统计 Selenium Python 中值大于 0 的属性的数量?
【发布时间】:2021-04-10 16:55:08
【问题描述】:

我正在使用 Selenium Python 来统计属性的数量。

html代码在这里:

<div id="leftw">
<a class="cat "  cid="1">BEVERAGE</a>
<a class="cat "  cid="8">APPS</a>
<a class="cat "  cid="2">SOUPS</a>
<a class="cat "  cid="9">SALADS</a>
<a class="cat "  cid="3">SANDWICHES</a>
<a class="cat "  cid="10">COMBOS</a>
<a class="cat "  cid="4">ENTREES</a>
<a class="cat "  cid="11">PIZZA</a>
<a class="cat "  cid="5">CALZONE</a>
<a class="cat "  cid="12">STROMBOLI</a>
<a class="cat "  cid="6">PASTRIES</a>
<a class="cat "  cid="13">DESSERTS</a>
<a class="cat "  cid="7">BREAD</a>
<a class="cat "  cid="14">SIDES</a>
<a class="cat "  cid="15">MEAT BY POUND</a>
<a class="cat "  cid="18">Kids Meal</a>
<a class="cat "  cid="19">MISC</a>
<a class="cat "  cid="0" ></a>
</div>

我想统计 cid value 不等于 0a 标签号。因为那里在 cid 值等于 0 的标记中没有值。

如果我跑步:

count_category = len(driver.find_elements_by_css_selector("#leftw .cat"))

我只能得到所有a标签的总数。但我想排除 cid 值为 0 的 a 标签。

【问题讨论】:

    标签: python selenium selenium-webdriver selenium-chromedriver


    【解决方案1】:

    你可以试试这个吗?

    count_category = len(driver.find_elements_by_xpath('//div[@id="lefw"]/a[not(@cid="0")]'))
    

    【讨论】:

    • 非常感谢您的回答,因为我使用的是 css 选择器,所以只需复制您下面的答案,它就可以正常工作,所以我选择了那个。但我真的知道您的代码也可以.真的很感激!
    • 你好朋友,你能帮我解决这个问题吗:stackoverflow.com/questions/59537965/…
    【解决方案2】:

    你必须添加一个伪选择器:不排除属性 cid 等于 0 的情况:

    count_category = len(driver.find_elements_by_css_selector("#leftw .cat:not([cid='0'])"))
    

    【讨论】:

    【解决方案3】:

    要使用Selenium Python 统计 cid 属性值不等于 0 的属性的数量,必须诱导 WebDriverWait对于visibility_of_all_elements_located(),您可以使用以下任一Locator Strategies

    • 使用CSS_SELECTOR

      print(len(WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "div#leftw a.cat:not([cid='0'])")))))
      
    • 使用XPATH

      print(len(WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.XPATH, "//div[@id='leftw']//a[@class='cat ' and not(@cid='0')]")))))
      

    【讨论】:

    • 非常感谢您的回答,因为我使用的是 css 选择器,所以只需复制您下面的答案,它就可以正常工作,所以我选择了那个,但我相信我会使用您的代码未来。再次感谢!
    • 你好朋友,你能帮我解决这个问题吗:stackoverflow.com/questions/59537965/…
    【解决方案4】:

    尝试遵循排除 cid='0' 的 CSS 选择器

    count_category = len(driver.find_elements_by_css_selector("#leftw >a.cat:not([cid='0'])"))
    

    【讨论】:

    猜你喜欢
    • 2018-12-18
    • 1970-01-01
    • 2020-03-19
    • 2021-03-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-11
    • 2016-07-18
    • 2022-09-26
    相关资源
    最近更新 更多