使用selenium python的google表单单选按钮

2024-04-26 06:56:08 发布

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

我用python在google表单页面上使用selenium编写了一个web scraper,但我希望能够选择我想要的特定按钮。我厌倦了一次选择所有的按钮,所以它最终按预期选择了最后一个。也不可能使用数字的倍数,因为每个数字包含不同数量的按钮

所以我想要一种方法来获取组中单选按钮的数量,并选择所需的按钮

Test site

如果还有其他建议,我很乐意听

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
import Resources
from selenium.webdriver.support.select import Select

driver = webdriver.Chrome(executable_path= Resources.driverChrome)
driver.maximize_window()
driver.get(Resources.linkTest)

time.sleep(3)
try:
    email = driver.find_element_by_xpath("//input[@type='email']")
    if email.is_displayed() & email.is_enabled():
        email.send_keys(Resources.emailTest)
except:
    print("Email box was not found")

containers = driver.find_elements_by_xpath("//div[@class ='freebirdFormviewerViewNumberedItemContainer']")
sNoBoxes = driver.find_elements_by_xpath("//input[@type='text' ] ")




time.sleep(2)
radios = driver.find_elements_by_xpath("//div[@class='appsMaterialWizToggleRadiogroupOffRadio exportOuterCircle']")

for radio in radios:
    radio.click()

for container in containers:

    sNo = int(containers.index(container))
    print("\n\n" + str(sNo) + "    " + container.text)


button = driver.find_element_by_xpath("//span[contains(text(),'Submit')]")
button.click()

time.sleep(3)

try:
    viewScore = driver.find_element_by_xpath("//span[contains(text(),'View score')]").click()

except:
    pass

Tags: textfromimportbytimeemaildriverselenium
1条回答
网友
1楼 · 发布于 2024-04-26 06:56:08

首先,您可以在网页上找到包含以下代码的所有单选按钮:

radiobuttons = driver.find_elements_by_class_name("appsMaterialWizToggleRadiogroupElContainer")

结果:单选按钮元素列表

接下来,您要计算单选按钮。注意单选按钮是全局的;单选按钮“选项2”是第11个按钮,而不是第2个如果要单击第一个单选按钮,请使用:

radiobuttons[0].click()

结果:单击单选按钮

要单击第n个单选按钮,请使用:

radiobuttons[n-1].click()

相关问题 更多 >