<tr>
<td id="td2">
<div id="firstDiv">
<table border="0" cellspacing="1" cellpadding="2">
<tbody><tr>
<td> </td>
<td>ISOC</td>
<td>User Id</td>
<td>Name</td>
<td>User Type</td>
<td>Template</td>
</tr>
<tr>
<td style="background-color: rgb(10, 66, 121); color: rgb(255, 255, 255);"><input type="radio" class="radio" onclick= "this.form.iata_portal_entry.disabled=this.form.cancel.disabled =false;" name="login" value="iata_portal_entry.0.107AT.4354"></td>
<td style="background-color: rgb(10, 66, 121); color: rgb(255, 255, 255);">AT</td>`
我选择单选按钮的代码:-
radiobuttons = driver.find_elements(By.XPATH, "//td/input[@type='radio']")
print(radiobuttons)
radiobuttons[0].click()
尝试过替代代码:-
driver.find_element(By.XPATH, "//input[@type='radio'][@value='iata_portal_entry.0.107AT.4354']").click()
您看到的错误是由“find_elements”方法返回的空列表引起的。
您的 XPATH 无效(看起来有效),或者您的表格位于 iframe 中,或者您的页面未完全加载。
您没有提供目标网站的链接,但一般来说,使用单选按钮时不应该有任何技巧。
这是处理单选按钮的简单示例。它包括等待元素出现,循环遍历所有找到的元素,仔细检查元素是否可单击,然后进行实际单击。
wait = WebDriverWait(driver, 10)
try:
driver.get("https://qbek.github.io/selenium-exercises/en/radio_buttons.html")
elements = wait.until(EC.presence_of_all_elements_located((By.XPATH, "//input[@type='radio']")))
for el in elements:
wait.until(EC.element_to_be_clickable(el)).click()
time.sleep(1)
finally:
driver.quit()