首页 > 解决方案 > 在 Python 中使用 Selenium 计算页面中单选按钮的数量

问题描述

我正在编写一个脚本来计算网页上单选按钮的数量 - https://docs.google.com/forms/d/e/1FAIpQLSeI8_vYyaJgM7SJM4Y9AWfLq-tglWZh6yt7bEXEOJr_L-hV1A/viewform?formkey=dGx0b1ZrTnoyZDgtYXItMWVBdVlQQWc6MQ 但它总是给我一个错误所有单选按钮之间的通用标识符是 role-radio。

<div class="appsMaterialWizToggleRadiogroupEl exportToggleEl isCheckedNext" jscontroller="D8e5bc" jsaction="keydown:I481le;dyRcpb:dyRcpb;click:cOuCgd; mousedown:UX7yZ; mouseup:lbsD7e; mouseenter:tfO1Yc; mouseleave:JywGue; focus:AHmuwe; blur:O22p3e; contextmenu:mg9Pef;touchstart:p6p2H; touchmove:FwuNnf; touchend:yfqBxc(preventMouseEvents=true|preventDefault=true); touchcancel:JMtRjd;" jsshadow="" aria-label="1" data-value="1" role="radio" aria-checked="false" aria-posinset="1" aria-setsize="5" tabindex="0"><div class="appsMaterialWizToggleRadiogroupInk exportInk"></div><div class="appsMaterialWizToggleRadiogroupInnerBox"></div><div class="appsMaterialWizToggleRadiogroupRadioButtonContainer"><div class="appsMaterialWizToggleRadiogroupOffRadio exportOuterCircle"><div class="appsMaterialWizToggleRadiogroupOnRadio exportInnerCircle"></div></div></div></div>
driver.get("https://docs.google.com/forms/d/e/1FAIpQLSeI8_vYyaJgM7SJM4Y9AWfLq-tglWZh6yt7bEXEOJr_L-hV1A/viewform?formkey=dGx0b1ZrTnoyZDgtYXItMWVBdVlQQWc6MQ")

ele=driver.find_elements_by_css_selector("input[role=radio]")

print(len(ele))

我是 Selenium 的新手,这类问题真的很令人困惑。TIA

标签: pythonseleniumselenium-webdrivercss-selectors

解决方案


要计算网页上单选按钮的数量,您可以使用以下任一定位器策略

  • 使用class_name

    driver.get("https://docs.google.com/forms/d/e/1FAIpQLSeI8_vYyaJgM7SJM4Y9AWfLq-tglWZh6yt7bEXEOJr_L-hV1A/viewform?formkey=dGx0b1ZrTnoyZDgtYXItMWVBdVlQQWc6MQ")
    print(len(driver.find_elements_by_class_name("appsMaterialWizToggleRadiogroupOffRadio")))
    
  • 使用css_selector

    driver.get("https://docs.google.com/forms/d/e/1FAIpQLSeI8_vYyaJgM7SJM4Y9AWfLq-tglWZh6yt7bEXEOJr_L-hV1A/viewform?formkey=dGx0b1ZrTnoyZDgtYXItMWVBdVlQQWc6MQ")
    print(len(driver.find_elements_by_css_selector("div.appsMaterialWizToggleRadiogroupOffRadio")))
    
  • 控制台输出:

    48
    

推荐阅读