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