【问题标题】:xpath to get element a label is for (selenium python)获取标签的元素的xpath(硒python)
【发布时间】:2021-11-17 22:02:33
【问题描述】:

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

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

【问题讨论】:

    标签: python selenium xpath label


    【解决方案1】:

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

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

    当然,您可以在此处根据需要设置所需的文本。
    我构建的 XPath 的意思是:“找到其中包含 label 文本的 tr 元素。所以在这个 tr 中找到一个 input 元素。”
    这就是你需要的。

    【讨论】:

      【解决方案2】:

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

      要点击元素,您可以使用以下任一Locator Strategies:

      • 使用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()
        

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-04-23
        • 2013-06-23
        • 2013-08-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多