单击标签Selenium automation

2024-05-29 02:09:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我在使用selenium选择此软件中的RUC选项时遇到问题,标签不包含区分它们的ID,并且类是相同的:

HTML elements

我正在使用以下代码,但它不适用于我:

label_tipo_documento = driver.find_element_by_xpath('//div[@id="form-group-tipo_documento"]//div[@class="col-sm-3"]//label[@class="radio-inline"][2]')
print(label_tipo_documento.text)
label_tipo_documento.click()

我尝试在标签[2](RUC)中选择第二个选项,并收到以下消息:

NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//div[@id="form-group-tipo_documento"]//div[@class="col-sm-3"]//label[@class="radio-inline"][2]"}
  (Session info: chrome=87.0.4280.88)

但是,当我使用[1]而不是[2]执行此操作时,它会找到一个值:

DNI

Tags: divformid选项groupcol标签element
3条回答
//div[@id="form-group-tipo_documento"]//div[@class="col-sm-3"]//label[@class="radio-inline"][2]

意味着您要选择divnode的第二个子体标签(它只有一个子体标签)。而您需要选择标签的第二次出现次数。所以要么试试

label_tipo_documento = driver.find_element_by_xpath('(//div[@id="form-group-tipo_documento"]//div[@class="col-sm-3"]//label[@class="radio-inline"])[2]')

label_tipo_documento = driver.find_elements_by_xpath('//div[@id="form-group-tipo_documento"]//div[@class="col-sm-3"]//label[@class="radio-inline"]')[1]

要单击与文本关联的元素作为RUC,您可以使用以下任一Locator Strategies

  • <input>使用css_selector

    driver.find_element_by_css_selector("div#form-group-tipo_documento label.radio-inline > input[value='RUC']").click()
    
  • 使用xpath<label>文本

    driver.find_element_by_xpath("//div[@id='form-group-tipo_documento']//label[@class='radio-inline' and contains(., 'RUC')]/input").click()
    

理想情况下,要单击元素,您需要为element_to_be_clickable()诱导WebDriverWait,并且可以使用以下Locator Strategies之一:

  • 使用CSS_SELECTOR

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div#form-group-tipo_documento label.radio-inline > input[value='RUC']"))).click()
    
  • 使用XPATH

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@id='form-group-tipo_documento']//label[@class='radio-inline' and contains(., 'RUC')]/input"))).click()
    
  • 注意:您必须添加以下导入:

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

参考资料

你可以在以下网站上找到关于NoSuchElementException的一些相关讨论:

使用下面的xpath单击第二个单选按钮

label_tipo_documento = driver.find_element_by_xpath("//label[./input[@value='RUC']]")
print(label_tipo_documento.text)
label_tipo_documento.click()

如果你想使用索引,那么试试下面的代码

label_tipo_documento = driver.find_element_by_xpath('(//div[@id="form-group-tipo_documento"]//div[@class="col-sm-3"]//label[@class="radio-inline"])[2]')
print(label_tipo_documento.text)
label_tipo_documento.click()

相关问题 更多 >

    热门问题