当前位置: 首页 > 知识库问答 >
问题:

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

白光耀
2023-03-14

我正在尝试访问容器divbackground-image:url(“....”)属性并获取图像URL。

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

当我尝试使用PhotoContainer.getCSSValue(“background-image”);访问元素时,它返回给我none

html代码为:

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

共有1个答案

孟开宇
2023-03-14

ImageURLs存储在SlideShow_Photos[]中,对吗?如果我们读了它,我们就能得到我们所需要的。

根据使用Selenium WebDriver阅读JavaScript变量的第三个答案,如果需要了解幻灯片的数量,那么我们可以在循环中获得它们String result=(String)js.executescript(“return slideshow_photos[”+i+“]”);

希望这能对你有所帮助。

 类似资料:
  •  有时候我们会碰到一些元素不可见,这个时候selenium就无法对这些元素进行操作了。例如,下面的情况: Python   页面主要通过“display:none”来控制整个下拉框不可见。这个时候如果直接操作这个下拉框,就会提示: from selenium import webdriverfrom selenium.webdriver.support.select import Selectim

  • 本文向大家介绍js获取隐藏元素的宽高,包括了js获取隐藏元素的宽高的使用技巧和注意事项,需要的朋友参考一下 获取隐藏元素(display:none)的物理尺寸 问题及场景 假如我们有这样一个输入框,点击能展开选择。如下图: 在这里输入框和下方的展开区域是分离的,独立的两个控件!初始状态下面的可选框是隐藏的(ng-show=false) 展开区域中可折叠组件accordion(对应图中省份,排序字段

  • 问题内容: 我正在尝试自动执行Google云端硬盘中的上传文件功能。 用于传递参数的元素以高度-0px隐藏。 用户操作均不会使该元素可见。因此,我需要一种变通方法来在不可见的元素上单击。 上述元素的xpath是- 我在用 例外- 元素当前不可见,因此可能无法与之交互。 我尝试使用JavascriptExecutor。但是找不到确切的语法。 问题答案: 试试这个: 上面的那堆将改变文件输入控件的可见

  • 问题内容: 嗨,我想知道如何使用Selenium WebDriver单击隐藏元素和/或禁用元素。 我知道使用selenium1可以执行以下操作: 这将起作用,但是对于selenium2(WebDriver),则不起作用。我不想使用jquery来启用或显示隐藏字段或JavaScript。这是因为大多数测试都使用xpath。 还是我只需要保留旧的selenium,就可以单击隐藏的字段? 问题答案: 使

  • 我有具体的情况,从检查元素在谷歌浏览器我有这个: 我想根据获取文本,但问题是,当我单击查看页面源时,这是完全隐藏的。 我试试这个: 问题: OpenQA.Selenium.NoSuchElment异常未处理 HResult=-2146233088 消息 = 没有这样的元素: 无法找到元素: {“方法”:“css 选择器”,“选择器”:“[数据-创建者-ids='anon'anon']”} (会话信

  • 我正在尝试从以下网站使用Selenium与Java(3.3.0和Java版本“1.8.0_66”)点击一个日历。 https://www.cathaypacific.com/cx/en_us.html 要点击的目标-飞行-单向-“离开”按钮不管我尝试了什么可能的选项-by.id、by.xpath和Actions、EventFiringMouse等等,这个按钮根本不会被点击。 null null }