尝试在表中查找单选按钮的元素,但出现“列表超出范围”错误

问题描述 投票:0回答:1
<tr>
    <td id="td2">
    <div id="firstDiv">
    <table border="0" cellspacing="1" cellpadding="2">
        <tbody><tr>
            <td>&nbsp;</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()

enter image description here

python selenium-webdriver radio-button
1个回答
0
投票

您看到的错误是由“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()
© www.soinside.com 2019 - 2024. All rights reserved.