I need to send text to description textarea. There is some predefined text which is cleared after click. I tried to use clear() or click() before sendkeys but nothing works correctly. It will send text there but it is still grey and after saving page there is error that tere is no text in description... Can I use something else instead of send keys? Thanks
Textarea looks like:
<textarea id="manage_description" class="eTextArea" name="e.description" cols="" rows="" onfocus="clearDescHint(this);" onblur="resetDescHint(this);" style="color: grey;"></textarea>
send_keys not working
self.driver.find_element_by_id('manage_description').send_keys("TEST")
As you mentioned send_keys("TEST")
are not working, there are a couple of alternatives to send a character sequence
to respective fields as mentioned below :
Use Keys.NUMPAD3
[simulating send_keys("3")
]:
login.send_keys(Keys.NUMPAD3)
Use JavascriptExecutor
with getElementById
:
self.driver.execute_script("document.getElementById('login_email').value='12345'")
Use JavascriptExecutor
with getElementsById
:
self.driver.execute_script("document.getElementsById('login_password')[0].value='password'")
Now comming to your specific issue, as you mentioned I tried to use clear() or click() before sendkeys but nothing works correctly
, so we will take help of javascript
to click()
on the text area to clear the predefined text
and then use send_keys
to populate the text field as follows:
self.driver.execute_script("document.getElementById('manage_description').click()")
self.driver.find_element_by_id('manage_description').send_keys("TEST")
As you mentioned sometimes it works sometimes not, so I would suggest the following:
ExplicitWait
for textarea
to be clickable.javascript
to send the text
within the textarea
too.Your code will look like:
my_string = "TEST";
elem = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID, "manage_description")))
self.driver.execute_script("document.getElementById('manage_description').click()")
self.driver.execute_script("arguments[0].setAttribute('value', '" + my_string +"')", elem);