1

我正在尝试访问background-image:url('.....')容器div的属性并获取图像 url。

问题是容器 div 最初是隐藏的,并且图像 url 是动态添加的,并且容器是可见的。

当我尝试使用photoContainer.getCssValue("background-image");它访问元素时,我会返回none

html代码是:

<div id="photo_container" style="background-image: url("res/images/840x460/287/28702560.jpg");"></div>

这个 div 的 CSS 是:

background-image: url("res/images/840x460/287/28702560.jpg");
display: none;

但是使用下面的代码可以获取 url 字符串:

       WebDriverWait wait = new WebDriverWait(driver, 20);
       WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("photo_holding")));
       // Now div is visible so get the attribute
       WebElement photoContainer = driver.findElement(By.id("photo_holding"));
       String imgUrl = photoContainer.getCssValue("background-image");
       System.out.println(imgUrl);

   driver.quit();

图像使用一些时间间隔作为幻灯片加载,我的目标是获取动态加载的图像 url

编辑 :

下面的代码用于从幻灯片中获取图像 url:

 for(int i=0;i<=slideCount;i++){
       WebDriverWait wait = new WebDriverWait(driver, 20);
       WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("photo_holding")));
       // Now div is visible so get the attribute
       WebElement photoContainer = driver.findElement(By.id("photo_holding"));
       String imgUrl = photoContainer.getCssValue("background-image");
       System.out.println(imgUrl);
       Thread.sleep(2000);
   }

使用以下代码动态添加图像容器“photo_holding”

$('<div id="photo_holding"></div>').insertAfter("#photo_container");$("#photo_holding").css("background-image","url("+slideshow_photos[o]+")");
 $("#photo_container").fadeOut(2000,function() {$(this).remove();$("#photo_holding").attr("id","photo_container");
4

2 回答 2

2

尝试等待直到div可见

WebDriverWait wait = new WebDriverWait(driver, 20);
WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("photo_container")));
// Now div is visible so get the attribute
WebElement photoContainer = driver.findElement(By.id("photo_container"));
String imgUrl = photoContainer.getCssValue("background-image");
于 2014-04-16T09:13:14.180 回答
0

ImageURL 存储在 中slideshow_photos[],对吗?然后,如果我们阅读它,那么我们可能会得到我们需要的东西。

根据Reading JavaScript variables using Selenium WebDriver 3rd answer,如果无论如何要了解幻灯片的数量,那么我们可以循环获取它们String result = (String)js.executeScript("return slideshow_photos["+i+"]");

希望这可以帮助你。

于 2014-04-16T10:02:44.853 回答