我正在尝试使用 selenium 单击复选框,如图片的 HTML 所示。想法是,所有四个选项的复选框输入标记都是相同的,它们仅通过 id="country_england" ...
进行区分。我不确定如何编写代码来选择英格兰框并单击它。任何帮助表示赞赏。
HTML 代码:
答案 0 :(得分:0)
使用 xpath:
//b[@id="country_england"]/../input
您还可以使用:
//b[@id="country_england"]/preceding-sibling::input
代码是:
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:
使用 XPATH
和 preceding:
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()
使用 XPATH
和 preceding-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
浏览器快照: