0

我在提取完整样式属性时遇到问题,因为它的一部分仍然没有到达 DOM - 它的图像有时需要 1-2 秒才能加载到屏幕上,所以会发生什么是有一个字符串属性,但是当图像从服务器到达时它会改变。我正在做一个 WebDriverWait 以使元素在 DOM 中可见,但是当我尝试采用它的“样式”属性时(具有“...;(url:”http://....“) ",它有时不存在,然后我的 substring() 失败。

这是代码:

@Step("Print Image src url")
public String printImage(Integer imgNo){ 
    WebElement imgStyle = (new WebDriverWait(driver, 15)).until(ExpectedConditions.visibilityOfElementLocated(By.xpath(Consts.ACTIVE_IMG_XPATH_1000 + "/div[" + (currentImg + 1) +"]/div[1]"))); 
    String styleString = imgStyle.getAttribute("style");
    Integer idxUrl = styleString.indexOf("url");
    Integer idxJpg = styleString.indexOf("jpg");
    String urlImage = styleString.substring(idxUrl+5,idxJpg+3); //styleString.indexOf("http"),20
    Log.info("V - Image " + imgNo + " src is: " + urlImage);
    return urlImage;
}

我可以简单地添加 System.wait(3000),但我不想使用它。任何想法如何更好地解决它?我可以等待字符串的可见性吗?

谢谢你的时间。

4

1 回答 1

1

HTML是什么样的?您可以在动态和变化的部分之前使用contains或和开头的 url。starts-with喜欢WebDriverWait(driver, 15).until(EC.visibility_of_element_located(By.XPATH, "//div[contains(@style, 'text']"))

于 2018-06-27T13:58:27.737 回答