Selenium webdriver获取元素的所有数据属性

uri*_*ald 4 selenium selenium-webdriver

使用Selenium webdriver我有以下元素

<div data-1223="some data" data-209329="some data" data-dog="some value">
Run Code Online (Sandbox Code Playgroud)

有没有办法获得元素的所有数据属性?对于我可以使用的特定属性

elem.getAttribute('data-1223') 
Run Code Online (Sandbox Code Playgroud)

但是如何将所有数据属性组合在一起

Shu*_*ain 13

使用以下代码: -

WebElement element = "Your Element"; // Your element
JavascriptExecutor executor = (JavascriptExecutor) driver;
Object aa=executor.executeScript("var items = {}; for (index = 0; index < arguments[0].attributes.length; ++index) { items[arguments[0].attributes[index].name] = arguments[0].attributes[index].value }; return items;", element);
System.out.println(aa.toString());
Run Code Online (Sandbox Code Playgroud)

希望它能帮到你:)

  • 在转换之前,不要忘记检查你的驱动程序是否是一个`JavascriptExecutor` :)几个驱动程序类没有实现它. (2认同)

Pau*_*cks 2

不可以。Selenium WebDriver 中无法访问您不知道全名的任何属性。您甚至无法枚举 a 的所有属性WebElement

看起来 jsonwire 协议不支持这个概念。GET_ELEMENT_ATTRIBUTE 命令采用属性名称列表,而不是属性名称模式列表。

您可能可以通过JavascriptExecutorXPath 或 CSS 查询来查询元素的所有属性名称,然后使用它来循环getAttribute。但如果您打算这样做,您可以构建 XPath 或 CSS 查询来直接为您提供值,并WebElement完全将其排除在外。