【问题标题】: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()