El elemento no se puede alcanzar mediante el teclado – Campo de entrada bajo ShadowRoot.
Utilizo el último Chrome y Chromedriver. Tengo un sitio web con elementos DOM y escribiré cualquier texto en un campo de entrada.
Código HTML (disculpas por la captura de pantalla):
<a href="https://i.stack.imgur.com/2aLjh.png"><img src="https://i.stack.imgur.com/2aLjh.png" alt="enter image description here"></a>
Código Python:
“`
def expand_shadow_element(element):
shadow_root = driver.execute_script(‘return arguments[0].shadowRoot.children’, element)
return shadow_root
…
root1 = driver.find_element_by_id(“UI-tfVorgangsname”)
shadow_root1 = expand_shadow_element(root1)
root2 = shadow_root11.find_element_by_xpath(“//input[@part=’value’]”)
time.sleep(2)
root2.click()
time.sleep(2)
root2.send_keys(‘testssdfs’)
Recibo estos mensajes:
selenium.common.exceptions.ElementNotInteractableException: Message: Element is not reachable by keyboard
Veo que el clic funciona, el cursor está activo en el campo de entrada, pero send_keys no funciona. ¿Tienes alguna idea?
¡Muchas gracias!
davy.ai
Basándonos en las capturas de pantalla del código HTML y el código Python proporcionados, parece que el problema radica en que la función
send_keys
no funciona, aunque la funciónclick
lo hace y el cursor está activo en el campo de entrada.Una posible solución podría ser utilizar la clase
ActionChains
del móduloselenium.webdriver.common.action_chains
para mover primero el cursor al campo de entrada y luego enviar las teclas. Aquí hay un ejemplo de cómo modificar el código Python para usarActionChains
:Este código crea un nuevo objeto
ActionChains
, mueve el cursor al elementoroot2
, lo hace clic y luego envía el texto deseado usandosend_keys
.Esperamos que esta solución resuelva el problema con
send_keys
que no funciona.