我目前正在对 SVG 元素进行基于屏幕截图的测试。一页上有很多,所以它们不是同时加载的。编写了一个等待某个 SVG 出现在页面上的函数:
public void Wait(WebDriver driver, String XPath)
{
driver.manage().timeouts().pageLoadTimeout(240, TimeUnit.SECONDS);
WebDriverWait wait = new WebDriverWait(driver, 240);
wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath(XPath)));
wait.until(ExpectedConditions.elementToBeClickable(By.xpath(XPath)));
wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.xpath(XPath))));
}
但它不能正常工作,因为 页面上空白区域的屏幕截图会定期创建。程序员说重点是svg是和页面并行加载的。我检查了存在元素,它告诉我嵌入已经出现,但实际上嵌入中还没有svg文件。那么如何等到 SVG 在页面上呈现?
Selenium 找不到嵌入中呈现的元素。为了使这成为可能,您需要使用命令切换到嵌入
您可以像使用页面一样使用嵌入(也就是说,上面描述的等待功能开始工作)。完成工作后,需要切换回来: