![](/img/trans.png)
[英]How to get text content first preceding and following text node in DOM using given 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.