如何在python中使用selenium从单选按钮中进行选择?

如何在python中使用selenium从单选按钮中进行选择?,python,selenium,xpath,css-selectors,webdriverwait,Python,Selenium,Xpath,Css Selectors,Webdriverwait,我尝试使用此代码选择单选按钮: 从selenium导入webdriver driver=webdriver.Chrome() 司机,上车https://www.asiamiles.com/en/enrolment.html') 性别=驱动程序。按id查找元素(“性别女性”) 性别。点击() 我收到了这个错误 selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable

我尝试使用此代码选择单选按钮:

从selenium导入webdriver
driver=webdriver.Chrome()
司机,上车https://www.asiamiles.com/en/enrolment.html')
性别=驱动程序。按id查找元素(“性别女性”)
性别。点击()
我收到了这个错误

selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable

问题可能在哪里?我如何解决它?

获取
ElementNotInteractivatableException
的原因是单选按钮坐标为x=0和y=0,因此selenium无法单击

请使用以下方法

所需进口:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
脚本:

url = 'https://www.asiamiles.com/en/enrolment.html'
driver.get(url)
female = WebDriverWait(driver,30).until(EC.presence_of_element_located((By.CSS_SELECTOR,'.radio-label.bodytext4.F')))
female.location_once_scrolled_into_view
female.click()

仅使用
id
当您将鼠标悬停在
label
标记上时,它将显示单选按钮的阴影区域,您需要单击该区域。除此之外,加载页面需要一段时间,所以为了平滑操作,请使用action类,它将单击元素

actions = ActionChains(driver)

gender = driver.find_element_by_xpath(".//input[@name='gender']/following-sibling::label[@for='gender_Female']") 
actions.move_to_element(gender).perform()
要想
单击女性单选按钮上的()
,您必须将
元素的WebDriverWait设置为可单击()
,并且您可以使用以下任一选项:

  • 使用
    CSS\u选择器

    driver.get("https://www.asiamiles.com/en/enrolment.html")
    WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"label[for='gender_Female']"))).click()
    
  • 使用
    XPATH

    driver.get("https://www.asiamiles.com/en/enrolment.html")
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//label[@for='gender_Female']"))).click()
    
  • 注意:您必须添加以下导入:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
  • 浏览器快照:


标签的可能副本隐藏了输入字段。尝试使用xpath-//标签[contains(,'Female')单击标签