Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Selenium webdriver get all the data attributes of an element

Using Selenium webdriver I have the following element

<div data-1223="some data" data-209329="some data" data-dog="some value">

Is there a way to get all the data- attributes of the element? For a specific attribute I can use

elem.getAttribute('data-1223') 

but how can I get all the data attributes together

like image 513
uri wald Avatar asked Dec 02 '22 15:12

uri wald


2 Answers

Use below Code:-

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

Hope it will help you :)

like image 151
Shubham Jain Avatar answered Dec 21 '22 23:12

Shubham Jain


No. There is no way in Selenium WebDriver to access any attribute whose full name you don't know. You can't even enumerate over all attributes of a WebElement.

It doesn't look like the jsonwire protocol supports this concept. The GET_ELEMENT_ATTRIBUTE command takes a list of attribute names, not a list of attribute name patterns.

It is probable that you could query via a JavascriptExecutor and either XPath or CSS query to find all the attribute names for your element, then use that to loop over getAttribute. But if you're going to do that, you can just construct your XPath or CSS query to give you the values directly, and leave the WebElement out of it completely.

like image 26
Paul Hicks Avatar answered Dec 21 '22 22:12

Paul Hicks