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")
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
.
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.
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")
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
.
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.