I am trying to send automated google chats but the element of the text box in which I write the message has no <input>
tag. The <div>
s are not taking input. Here is the structure of the chat box:
<div jsname="yrriRe" jsaction="touchend:ufphYd; input:q3884e; paste:QD1hyc; drop:HZC9qb;" class="T2Ybvb KRoqRc editable" role="textbox" aria-label="History is on" aria-multiline="true" spellcheck="true" id="T2Ybvb0" g_editable="true" contenteditable="true"><br></div>
I tried this but is not working
element = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//*[@id='T2Ybvb0']"))).send_keys("GOOD MORNING")
Given the HTML:
<div jsname="yrriRe" jsaction="touchend:ufphYd; input:q3884e; paste:QD1hyc; drop:HZC9qb;" class="T2Ybvb KRoqRc editable" role="textbox" aria-label="History is on" aria-multiline="true" spellcheck="true" id="T2Ybvb0" g_editable="true" contenteditable="true">
<br>
</div>
The <div>
element is a dynamic element and contains the attribute contenteditable="true"
. So ideally, to send a character sequence to the element you need to induce WebDriverWait for the element_to_be_clickable() and you can use either of the following locator strategies:
Using CSS_SELECTOR:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a[aria-label='History is on']"))).send_keys("Mike Johnes")
Using XPATH:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[aria-label='History is on']"))).send_keys("Mike Johnes")
Note: You have to add the following imports :
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC