簡體   English   中英

如何使用xpath獲取以下文本名稱?

[英]How to get following text name using xpath?

我嘗試使用以下 xpath

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

但得到以下錯誤

"org.openqa.selenium.InvalidSelectorException: invalid selector: The result of the xpath expression "//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>

請嘗試以下 Xpath。

希望能幫助到你

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

xpath 中的text()返回文本節點,Selenium 不支持它。 定位元素並使用getText()獲取文本

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

由於父元素包含屬性draggable="true"總是一個動態元素,准確地說是React元素。 此外,由於文本TestName是一個文本節點,您需要為visibilityOfElementLocated()引入WebDriverWait ,您可以使用以下任一定位器策略

  • 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']")))));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM