如何为涉及::before标签的元素编写xpath

问题描述 投票:0回答:1

我正在尝试单击后面跟着

::before
标签的选择元素。任何人都可以帮我为下面的 HTML 编写 XPath 或 CSSselector 路径吗

下面是我写的点击月份的XPath

driver.findElement(By.xpath("//div[contains(@class,'pika-single is-bound left-aligned bottom-aligned')]/div[contains(@class,'pika-lendar')]/div[contains(@class,'pika-title']/div[1]/select[contains(@class,'pika-select pika-select-month')]"));
java selenium xpath css-selectors webdriverwait
1个回答
0
投票

伪元素

CSS 伪元素 用于设置元素的指定部分的样式。它可用于:

  • 设置元素的第一个字母或行的样式
  • 在元素内容之前或之后插入内容

::之前

::before
是一个伪元素,它允许您将内容从 CSS 插入到页面上(无需将其添加到 HTML 中)。虽然最终结果实际上并不在 DOM 中,但它显示在页面上,就好像它在 DOM 中一样。

您可以在以下位置找到一些相关的详细讨论:


这个用例

由于日期选择器是一个 菜单,您必须使用 Select Class。此外,由于您必须与 进行交互,因此您必须为 elementToBeClickable() 诱导

WebDriverWait

要从

下拉
中选择文本为January,您可以使用以下任一定位器策略

  • 使用cssSelector

    WebElement elem = new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("select.pika-select.pika-select-month")));
    Select mySelect = new Select(elem);
    //selecting the item January by value
    mySelect.selectByValue("0");
    
  • 使用 xpath 并在一行中:

    //selecting the item January by visible text
    new Select(new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//select[@class='pika-select pika-select-month']")))).selectByVisibleText("January");
    

您可以在以下位置找到一些相关的详细讨论:

© www.soinside.com 2019 - 2024. All rights reserved.