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

2024-09-25 00:23:33 发布

您现在位置:Python中文网/ 问答频道 /正文

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

<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还不熟悉,这类问题确实令人困惑。短暂性脑缺血发作


Tags: httpsdivcomdocsgoogleforms按钮class
3条回答

要计算webpage上的单选按钮数,可以使用以下任一Locator Strategies

  • 使用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
    

尝试以下任一方法:

print(len(driver.find_elements_by_css_selector("exportOuterCircle")))
print(len(driver.find_elements_by_css_selector("exportInnerCircle")))

这些将输出:

48
48

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

试试这个选择器

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

我建议大家使用CSS,它比xpath更快

相关问题 更多 >