我在提取完整样式属性时遇到问题,因为它的一部分仍未到达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),但是我不想使用它。任何想法如何更好地解决它?我可以等待String的可见性吗?

谢谢你的时间。

最佳答案

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

09-11 18:13