實際上,我正在執行來自http://demo.seleniumeasy.com/basic-radiobutton-demo.html - Group Radio Buttons Demo 的任務。
是否可以在某個 div 中選擇按鈕?因為在 findelements() 生成的串列的代碼長度中,我希望它是 7,但我希望它是 5(應該只選擇 Group Radio Buttons 中的按鈕)。
我知道所有按鈕的 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))
uj5u.com熱心網友回復:
你當然可以。
您可以使用更精確的定位器來代替"//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 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元素。
uj5u.com熱心網友回復:
您也可以OR在 Xpath 中使用來僅定位這 5 個元素。下面是這些單選按鈕的 Xpath Group Radio Buttons Demo。
//input[@name='gender' or @name='ageGroup']
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/515481.html
