获取标签的元素的 xpath (selenium python)

xpath to get element a label is for (selenium python)

我正在使用 python 包 selenium 编写一个脚本,每周自动为自己设置约会。我最终想要的是能够单击 id="1103222339" 的按钮。我最初试过driver.find_element_by_id("1103222339").click(),但我不能保证每次我运行这个脚本,我需要的约会都会对应这个ID。为解决此问题,我想查看包含指定我想要的约会时间和日期的文本的标签,然后以某种方式通过该标签检索 ID 以获取值。

我以前没有用过 XPath,如何通过文本找到标签对应的元素?

您可以构建基于时间定位目标 input 元素的 XPath 表达式,如下所示:

driver.find_element_by_xpath("//tr[.//label[contains(text(),'November 24, 2021 3:20 PM')]]//input").click()

这里当然可以根据自己的需要设置想要的文字了
我构建的 XPath 意味着:“找到 tr 元素,其中包含一个 label 元素,其中包含 November 24, 2021 3:20 PM' 文本。所以在这个 tr 中找到一个 input 元素."
这就是你需要的。

要单击 <input> 按钮元素,您不能使用 id="1103222339",因为它是动态生成的,每次您访问应用程序时都会更改。

要单击该元素,您可以使用以下任一方法

  • 使用css_selector:

    driver.find_element(By.CSS_SELECTOR, "a.StrongText[for]").click()
    
  • 使用xpath:

    driver.find_element(By.XPATH, "//label[@for and @class='StrongText'][contains(., 'November 24, 2021 3:20 PM')]").click()