selenium 仅在单个div中选择单选按钮

qnzebej0  于 2022-11-10  发布在  其他
关注(0)|答案(2)|浏览(147)

实际上,我正在做http://demo.seleniumeasy.com/basic-radiobutton-demo.html-Group单选按钮演示中的任务。
可以在某个div中选择按钮吗?因为在我的代码中,由findelements()生成的列表的长度是7,但我希望它是5(应该只选择Group单选按钮中的按钮)。
我知道div对于所有按钮都是相同的,但有没有其他(更好的)选择器可以在这里使用?

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
import time

PATH = r"C:/Users/*****/PycharmProjects/chromedriver.exe"

s = Service(PATH)
driver = webdriver.Chrome(service=s)

driver.get("http://demo.seleniumeasy.com/basic-radiobutton-demo.html")

# Single Radio Button Demo

button_radio_male = driver.find_element(by=By.XPATH,
                                        value="//label[normalize-space()='Male']//input[@name='optradio']")
button_radio_male.click()

button_get_checked_value = driver.find_element(by=By.ID, value="buttoncheck")
button_get_checked_value.click()

# Multiple Radio Button Demo

buttons = driver.find_elements(by=By.XPATH, value="//div[@class='panel-body']//input[@type='radio']")
print(len(buttons))
brccelvz

brccelvz1#

你当然可以。
您可以使用更精确的定位器来代替"//div[@class='panel-body']//input[@type='radio']" XPath定位器

"//div[contains(@class,'panel') and(contains(.,'Group Radio Buttons Demo'))]//div[@class='panel-body']//input[@type='radio']"

实际上,它甚至可以缩写为:

"//div[contains(@class,'panel') and(contains(.,'Group'))]//div[@class='panel-body']//input[@type='radio']"

在上面的表达式中,我们通过它的类名和子元素的文本内容来定义精确的父div元素。

uajslkp6

uajslkp62#

您还可以在XPath中使用OR来仅定位这5个元素。下面是Group Radio Buttons Demo中这些单选按钮的XPath。

//input[@name='gender' or @name='ageGroup']

相关问题