当前位置: 首页 > 面试题库 >

获取Selenium中选定元素的所有CSS属性的值

唐煜
2023-03-14
问题内容

假设我使用以下命令通过XPath找到了一个元素:

WebElement we = driver.findElement(By.xpath("some XPath"));

我知道我可以通过获取特定CSS属性we.getCssValue("some property")的值,但是可以获取所有属性的值而不必明确提及其名称吗?


问题答案:

原生Selenium API无法做到这一点。

但是,使用Javascript您可以:

您可以使用Seleniums的JavascriptExecutor.executeScript功能使用一些javascript支持。

必要的js代码可在找到(由@Mahsum Akbas提出)

现在,这里是Java / Selenium代码,它将以“ css-attribute01:value01; css-
attribute02:value02;”的形式返回给您一个字符串。

请注意,这将返回该元素上的 所有 css属性。

WebElement we = driver.findElement(By.tagName("div"));
JavascriptExecutor executor = (JavascriptExecutor)driver;
String script = "var s = '';" +
                "var o = getComputedStyle(arguments[0]);" +
                "for(var i = 0; i < o.length; i++){" +
                "s+=o[i] + ':' + o.getPropertyValue(o[i])+';';}" + 
                "return s;";

System.out.println(executor.executeScript(script, we));

您可以根据需要更改脚本。例如,您可以html" target="_blank">返回一个仅包含所有值而没有属性的字符串。随时进行更改和尝试。

更新资料

如果只对元素的内联样式感兴趣,则可以使用@JeffC在注释中指出的“本机” Selenium:

driver.findElement(By.tagName("div")).getAttribute("style")

但!:

这只会为您提供“内联样式”,而不是所有应用于元素的css样式。如果您同时运行两个版本并打印结果,您将看到巨大的不同。



 类似资料:
  • 我正在尝试访问容器的属性并获取图像URL。 问题是容器div最初是隐藏的,而图像url是动态添加的,并且容器是可见的。 当我尝试使用访问元素时,它返回给我。 html代码为: 此分区的CSS为: 但是,使用下面的代码可以获得url字符串: 使用以下代码动态添加图像容器“photo_holding”

  • 问题内容: 我试图遍历一个元素并获取该元素的所有属性以输出它们,例如,一个标签可能具有3个或更多属性,我不知道,我需要获取这些属性的名称和值。我在考虑以下方面: 谁能告诉我这是否可能,如果可以,正确的语法是什么? 问题答案: 该属性包含它们全部: 您还可以做的是扩展,以便可以像获取所有属性的普通对象一样调用它: 用法:

  • 问题内容: 我今天一直在测试Javascript CSS函数,并注意到当使用.style.cssText时,它仅提供了我用JS设置的CSS。 相反,我想获取元素的所有CSS,所以我猜我在做错什么,或者可能需要另一个函数,例如getComputedStyle,但要使用整个CSS而不是单个属性值,但是我找不到搜索时需要的东西。 所以我的问题是如何从代码的最后部分获得完整的CSS,例如: 而不是当前输出

  • 问题内容: 我正在Python中使用Selenium。我想获取一个元素的,并检查它是否是我所期望的。 这是我的代码: 我怎样才能做到这一点?Selenium文档似乎有很多关于选择元素的内容,但是与属性无关。 问题答案: 您可能正在寻找。一个例子示此处以及

  • 问题内容: 我需要获取所有CSS属性的元素列表。我怎样才能做到这一点 ? 问题答案: 从SO1004475复制源-jQueryCSS插件可返回元素的计算样式以伪克隆该元素?-如果您觉得有用,请点击链接并在那里进行评论。 看起来很荒谬,但这可能是您最好的选择- 不带任何参数的情况下,使用所有这些东西设置对象。 请注意,这不会捕获所有可能的CSS属性,尤其是CSS3的新属性。这是一个所有标准的CSS和

  • 问题内容: 在某些元素具有自定义CSS属性的应用程序中,是否可以通过JavaScript检索此类值? 例如 我可以通过以下两种方法访问color属性: 但是这些不适用于自定义属性。完全支持吗? 问题答案: 浏览器无法理解的CSS值将被丢弃,这说明了为什么无法通过来获取CSS值。 过去,您不得不依靠存储具有数据属性的数据并自己通过JavaScript处理继承。 但是,自此以来,“自定义属性”(也称为