<div class="_2b9p7-6Tcy_ja6zEhxML2e">
   <div class="flex _1VLiOJeD-kdBBLC9owCkQr">
    <span class="flex-1">”Total””:”</span>
    <span>
           “USD”
           “2,175”
    </span>


需要将文本插入第二引号“”中,在本例中为““ 2,175””,我不知道该怎么做。
“ USD”和“ 2,175”都来自API(每次都不同,因此我不能使用driver.findElement(By.xpath(“ xpath而不是'USD')),我可以拆分结果,并且只取是必不可少的部分,但我想知道一种方法,该方法如何仅从未来的第二阶段中获取价值(2,175)。
我在Intellij上执行了以下操作

System.out.println(driver.findElement(By.xpath("//div[@class = '_2b9p7-6Tcy_ja6zEhxML2e']//div//span/following-sibling:: span")).getText());


并获得全文-USD 2,175,但我需要2,175

最佳答案

若要提取值2,175,需要诱导WebDriverWait使所需的元素可见,并且可以使用以下任一解决方案:


使用xpath和以下命令:

WebElement myElement = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//span[contains(., 'Total')]//following::span[1]")));
System.out.println(((JavascriptExecutor)driver).executeScript('return arguments[0].lastChild.textContent;', myElement).toString());

使用xpath和跟随兄弟:

WebElement myElement = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//span[contains(., 'Total')]//following-sibling::span[1]")));
System.out.println(((JavascriptExecutor)driver).executeScript('return arguments[0].lastChild.textContent;', myElement).toString());

10-01 03:39