【问题标题】:How to get following text name using xpath?如何使用 xpath 获取以下文本名称?
【发布时间】:2020-03-12 13:15:26
【问题描述】:

我尝试使用以下 xpath

driver.findElement(By.xpath("//div[contains(@class,'ReactTags__selected')]//span[1]/text()"));

但出现以下错误

"org.openqa.selenium.InvalidSelectorException: 无效选择器: xpath 表达式"//div[contains(@class,'ReactTags__selected')]//span[2]/text()" 的结果是:[ object Text]。它应该是一个元素。"

<div class="ReactTags__selected">
        <span class="tag-wrapper ReactTags__tag" style="opacity: 1; cursor: auto;" draggable="true">
        "TestName"
        <a class="ReactTags__remove">×</a>
        </span>
</div>

【问题讨论】:

    标签: java selenium-webdriver xpath css-selectors webdriverwait


    【解决方案1】:

    请尝试以下 Xpath。

    希望对你有帮助

    //div[contains(@class,'ReactTags__selected')]//span[2]/a/text()
    

    【讨论】:

    • HTML 中没有两个&lt;span&gt; 标签 text() 不受 Selenium 支持。
    【解决方案2】:

    xpath 中的text() 返回文本节点,Selenium 不支持。找到元素并使用getText()获取文本

    WebElement element = driver.findElement(By.xpath("//div[contains(@class,'ReactTags__selected')]//span[1]"));
    String text = element.getText();
    

    【讨论】:

      【解决方案3】:

      由于父元素包含属性draggable="true",所以它总是一个动态元素,确切地说是React 元素。此外,由于文本 TestNameText Node,您需要为 visibilityOfElementLocated() 引入 WebDriverWait,您可以使用以下任一 @987654322 @:

      • cssSelector:

        System.out.println(((JavascriptExecutor)driver).executeScript('return arguments[0].firstChild.textContent;', new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("div.ReactTags__selected > span.tag-wrapper.ReactTags__tag")))).toString());
        
      • xpath:

        System.out.println((String)((JavaScriptExecutor)driver).executeScript("return arguments[0].firstChild.textContent;", new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[@class='ReactTags__selected']/span[@class='tag-wrapper ReactTags__tag']")))));
        

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-02-18
        • 1970-01-01
        • 1970-01-01
        • 2018-07-30
        • 2023-03-14
        • 1970-01-01
        相关资源
        最近更新 更多