Have used python selenium script to trigger selenium server to run JavaScript code. It works fine.
drv.execute_script('<some js code>')
However, I can't figure out how to run javascript code on an element that was retrieved using get_element_by_*() api. For example, I
ele = get_element_by_xpath('//button[@id="xyzw"]');
#question: how do I change the "style" attribute of the button element?
If I were on developer console of the browser, I can run it as
ele = $x('//button[@id="xyzw"]')[0]
ele.setAttribute("style", "color: yellow; border: 2px solid yellow;")
Just don't know how to do it in python selenium script. Thanks in advance.
2 Answers 2
execute_script accepts arguments, so you can pass the element:
drv.execute_script('arguments[0].setAttribute("style", "color: yellow; border: 2px solid yellow;")', ele)
3 Comments
Thanks to the answer by @Richard who led me in the right direction and Brian's link (even thought it's for java) who helped me to figure out the meaning of "arguments".
The following code will do what I need.
ele = get_element_by_xpath('//button[@id="xyzw"]');
drv.execute_script('arguments[0].setAttribute("style", "color: yellow; border: 2px solid yellow;")', ele)
Comments
Explore related questions
See similar questions with these tags.
Selenium.