Error: type object 'Keys' has no attribute 'chord'

Question:

I am getting below error while executing selenium code.

Code:

driver.find_element_by_id(PlaylistManagerLocators.Folder_Name).send_keys(Keys.chord(Keys.CONTROL, "a"), "Auto_Folder5763")

Error:

AttributeError: type object ‘Keys’ has no attribute ‘chord’

I have imported all required files.

from selenium.webdriver.common.keys import Keys
from selenium.webdriver import ActionChains


driver.find_element_by_id(PlaylistManagerLocators.Folder_Name).send_keys(Keys.chord(Keys.CONTROL, "a"), "Auto_Folder5763")        
Asked By: Tester P

||

Answers:

There is no function as chord in class selenium.webdriver.common.keys.Keys (Check the docs). You can simply split it into 2 statements.

driver.find_element_by_id(id).send_keys(Keys.CONTROL + "a")
driver.find_element_by_id(id).send_keys("Auto_Folder5763")

Or if you want to simultaneously have the keys pressed then you can try using selenium.webdriver.common.action_chains.ActionChains.

Answered By: JRodDynamite

Just to add an answer for a scenario some readers may encounter (I don’t have enough reputation to add this as a comment), if the webform has control keys disabled and you want to replace prefilled text with your own string then this could work:

driver.execute_script("document.getElementById('elementID').value='new value'")

You can also try calling .clear() on the element or simulating a triple click in action chains but an autofill or autoreplace function my still be triggered on .send_keys() in which case directly setting the attribute with javascript may be the best/only option.

Answered By: Martina K