ElementNotInteractableException
错误告诉您不能在此webElement上使用send_keys()方法。考虑到缺乏足够的信息来考虑问题,我真的不能告诉您什么可行,但是这里有一些提示:
- 使用ActionsChains尝试在字段中输入您想要的内容:
from selenium.webdriver.common.action_chains import ActionChains
actions = ActionChains(self.driver)
actions.send_keys('your_data')
actions.perform()
- 在尝试发送密钥之前尝试
inputMessage.click()
否则,这也发生在我身上,问题是我试图将键发送到div,而不是它内部的元素。
希望有帮助!
,
HTML contenteditable属性
通过使用一些JavaScript事件处理程序,只需将几乎所有HTML元素上的contenteditable
属性设置为可编辑状态,就可以将您的网页转换为完整,快速的RTF编辑器。例如,要创建一个<div>
元素,用户可以编辑其内容,则将是:
<div contenteditable="true">
This text can be edited by the user.
</div>
当HTML元素的contenteditable
设置为true
时,document.execCommand()
方法可用。这使您可以运行commands来操作可编辑区域的内容。但是,在不同的浏览器中contenteditable
的用法似乎有所不同。例如,当您按下 Enter 或 Return 来在可编辑元素内创建新的一行文本时,
- Firefox插入了
<br>
个元素
- IE / Opera使用了
<p>
个元素
- Chrome / Safari使用了
<div>
个元素
- Firefox 60在
<div>
元素中包含单独的行,以匹配Chrome,现代Opera,Edge和Safari的行为。
此用例
根据HTML,似乎下一个属性为<div>
的{{1}}具有属性 aria-label="Message @Ticketing"
。因此,理想情况下,您应该能够在此元素上调用contenteditable="true"
。
解决方案
最后,要与某个元素进行交互,您需要为send_keys()
引入 WebDriverWait ,并且可以使用以下任一Locator Strategies:
-
使用element_to_be_clickable()
:
CSS_SELECTOR
-
使用WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"div[aria-label='Message @Ticketing'][data-slate-editor='true'][role='textbox']"))).send_keys(msg)
:
XPATH
-
注意:您必须添加以下导入:
WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.XPATH,"//div[@aria-label='Message @Ticketing' and @data-slate-editor='true'][@role='textbox']"))).send_keys(msg)
本文链接:https://www.f2er.com/2900965.html