使用Selenium获取隐藏元素的CSS属性

时间:2014-04-16 09:01:46

标签: html css selenium selenium-webdriver imageurl

我正在尝试访问容器background-image:url('.....')的{​​{1}}属性并获取图片网址。

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

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

html代码是:

none

这个div的CSS是:

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

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

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

使用一些时间间隔以幻灯片形式加载图像,我的目的是获取动态加载的图像网址

编辑:

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

       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();

图像容器&#34; photo_holding&#34;使用以下代码动态添加

 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);
   }

2 个答案:

答案 0 :(得分: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");

答案 1 :(得分:0)

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

根据Reading JavaScript variables using Selenium WebDriver第3个答案,如果无论如何要知道幻灯片的数量,那么我们就可以让它们循环播放String result = (String)js.executeScript("return slideshow_photos["+i+"]");

希望这可以帮助你。