硒复选框选择

时间:2021-01-30 18:48:57

标签: python selenium selenium-webdriver xpath webdriverwait

我正在尝试使用 selenium 单击复选框,如图片的 HTML 所示。想法是,所有四个选项的复选框输入标记都是相同的,它们仅通过 id="country_england" ... 进行区分。我不确定如何编写代码来选择英格兰框并单击它。任何帮助表示赞赏。

HTML 代码:

HTML Code

2 个答案:

答案 0 :(得分:0)

使用 xpath:

 //b[@id="country_england"]/../input

这将找到具有该 ID 的 p 标记,然后转到父元素并导航回输入元素

您还可以使用:

      //b[@id="country_england"]/preceding-sibling::input

这会找到 p 标签的前一个具有标签输入的元素

代码是:

webD.get("https://icem.data-archive.ac.uk/#step1")

WebDriverWait(webD, 20).until(EC.element_to_be_clickable(
    (By.XPATH, '//*[@value="1861"]'))).click()


WebDriverWait(webD, 20).until(EC.element_to_be_clickable(
    (By.XPATH, '//b[@id = "country_england"]/preceding-sibling::input'))).click()

答案 1 :(得分:0)

所需元素是 Angular 元素。因此,要单击元素,您需要为 WebDriverWait 引入 element_to_be_clickable(),您可以使用以下任一 Locator Strategies

  • 使用 XPATHpreceding

    driver.get("https://icem.data-archive.ac.uk/#step1")
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@value='1851']"))).click()
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//b[@class='ng-binding' and @id='country_england']//preceding::input[1]"))).click()
    
  • 使用 XPATHpreceding-sibling

    driver.get("https://icem.data-archive.ac.uk/#step1")
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@value='1851']"))).click()
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//b[@class='ng-binding' and @id='country_england']//preceding-sibling::input[1]"))).click()
    
  • 注意:您必须添加以下导入:

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

icem_data-archive


更新

icem