使用Selenium webdriver我有以下元素
<div data-1223="some data" data-209329="some data" data-dog="some value">
有没有办法获取元素的所有数据属性? 对于特定属性,我可以使用
elem.getAttribute('data-1223')
但我怎样才能将所有数据属性放在一起
答案 0 :(得分:11)
使用以下代码: -
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());
希望它会对你有所帮助:)。
答案 1 :(得分:2)
没有。 Selenium WebDriver无法访问任何您不知道其全名的属性。您甚至无法枚举WebElement
的所有属性。
看起来jsonwire协议不支持这个概念。 GET_ELEMENT_ATTRIBUTE命令采用属性名称列表,而不是属性名称模式列表。
您可能可以通过JavascriptExecutor
和XPath或CSS查询来查找元素的所有属性名称,然后使用它来循环getAttribute
。但是,如果您要这样做,您可以构建您的XPath或CSS查询以直接为您提供值,并将WebElement
完全保留。
答案 2 :(得分:0)
此概念非常有效。试试吧!
WebElement element = driver.findElement(By.tagName("button"));
JavascriptExecutor executor = (JavascriptExecutor) driver;
Object elementAttributes = 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(elementAttributes.toString());