如何使用XPath获取span标签内动态变化的数值用于后续对比?
问题原因
直接打印WebElement对象时,输出的是Selenium的元素定位描述信息,并非元素内部的文本内容。
正确实现方案
- 基础修正:调用
getText()方法提取元素的可见文本 - 动态内容适配:添加显式等待逻辑,确保页面动态渲染完成、数值更新后再提取,避免获取到空值或旧数据
- 数值转换:将提取到的带逗号的字符串替换为点后转为数值类型,即可用于后续对比操作
修正后代码示例
@Test public void first(){ chromeDriver.get("https://www.open.ru/"); // 添加显式等待,最长等待10秒,直到目标元素可见 WebDriverWait wait = new WebDriverWait(chromeDriver, Duration.ofSeconds(10)); WebElement buyRateUSD = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//span[@class='main-page-exchange__rate']"))); // 提取文本并转换为可对比的数值 String rateText = buyRateUSD.getText(); double rate = Double.parseDouble(rateText.replace(",", ".")); System.out.println("out" + rateText); // 后续可直接使用rate变量做数值对比 }
注意:使用显式等待需要提前导入Selenium对应的工具类,JDK8+版本使用
Duration指定超时时间即可。
兜底方案
如果遇到元素可见性异常导致getText()返回空的情况,可以替换为buyRateUSD.getAttribute("textContent")提取元素的全量文本内容。
内容的提问来源于stack exchange,提问作者Otto Rahn
相关产品推荐
相关产品推荐

