Home > Software engineering >  Getting the attribute text from the custom attribute
Getting the attribute text from the custom attribute

Time:10-19

I have the custom attribute called upgrade-test="secondary-pull mktg-data-content in the following code snippet:

<section  upgrade-test="secondary-pull mktg-data-content" data-js="primary-pull" style="--primary-direct-d_user-bottom-pos:-290px;">

I am able to identify my element successfully by doing the following:

element = driver.find_element(By.XPATH, "//section[contains(@upgrade-test, 'mktg-data-content')]") 

This mktg-data-content gets changed every time a user goes to a different page for example it could be sales-data-content for the sales page etc.

What I am after is to find a way to retrieve this dynamic text of this custom attribute and pass it to my variable. Any help would really be appreciated. Thanks

CodePudding user response:

You need to fetch the attribute value using element.get_attribute("upgrade-test") and then need to do string manipulation.

elementval = driver.find_element(By.XPATH, "//section[contains(@upgrade-test, 'secondary-pull')]").get_attribute("upgrade-test")
print(elementval.split(" ")[-1])

Note:- splitted with space,which returns zero based list, index -1 means the last value of the list, since you have two elements in the list you can use this as well print(elementval.split(" ")[1])

CodePudding user response:

You need to find a unique locator for that element.
Without seeing that page we can only guess, so I can guess tech-pull--digital and secondary-pull--dvd-ping class names are making a unique combination.
If so you can use the following code:

attribute_val = driver.find_element(By.CSS_SELECTOR, "section.tech-pull--digital.secondary-pull--dvd-ping").get_attribute("upgrade-test")
print(attribute_val.split(" ")[-1])

The first line here locates the element and retrieves the desired attribute value while the second line isolates the first part of the desired attribute value as explained by KunduK

  • Related