在Python中使用Selenium计算页面中的单选按钮数

在Python中使用Selenium计算页面中的单选按钮数,python,selenium,selenium-webdriver,css-selectors,Python,Selenium,Selenium Webdriver,Css Selectors,我正在写一个脚本来计算网页上单选按钮的数量- 但它总是给我一个错误 所有单选按钮之间的公共标识符是角色单选 <div class="appsMaterialWizToggleRadiogroupEl exportToggleEl isCheckedNext" jscontroller="D8e5bc" jsaction="keydown:I481le;dyRcpb:dyRcpb;click:cOuCgd; mousedown:UX7yZ;

我正在写一个脚本来计算网页上单选按钮的数量- 但它总是给我一个错误 所有单选按钮之间的公共标识符是角色单选

<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>
我对Selenium还不熟悉,这类问题确实令人困惑。TIA

尝试此选择器

by_xpath("//div[@role='radio']")
by_css("div[role='radio']")

我建议大家使用CSS,Supossly比xpath更快地计算屏幕上的单选按钮数,您可以使用以下任一选项:

  • 使用
    类名

    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\u选择器

    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
    
尝试以下任一方法:

print(len(driver.find_elements_by_css_selector("exportOuterCircle")))
print(len(driver.find_elements_by_css_selector("exportInnerCircle")))
这些将输出:

48
48

您也可以尝试其他css选择器。其思想是检查元素并找到一个只用于单选按钮的唯一类,然后在css选择器中使用该类。它将为您提供元素列表。然后您可以获得该列表的计数。

您想要单选按钮的数量还是有单选按钮的问题的数量?该网页上的单选按钮的数量
48
48