如何使用Python Selenium向页面添加文本?

3
我将尝试使用 Python Selenium 向文本框中输入文本。
以下是 HTML 代码:

请看下面的示例:

<div class="sendBox placeholder" contenteditable="true" data-placeholder="Type a message or drop attachment..." id="sendMessage" style="height: 375px;"></div>

手动在文本框中输入“TEST”后,HTML代码如下:

<div class="sendBox placeholder" contenteditable="true" data-placeholder="Type a message or drop attachment..." id="sendMessage" style="height: 375px;">TEST</div>

我尝试了以下的代码,但没有反应。
driver.find_element_by_xpath("//div[@id='sendMessage']").send_keys("testing")

然而,如果我手动单击文本框,使光标出现,然后输入该代码,它会起作用。我无法弄清如何通过Python Selenium显示光标。我尝试了以下方法。

driver.find_element_by_xpath("//div[@id='sendMessage']").click()

如果您先点击元素,然后再向其发送键值,会发生什么?会有任何错误吗?谢谢。 - alecxe
好的,如果我连续执行以下两行代码,就不会出现错误,也不会发生任何事情: driver.find_element_by_xpath("//div[@id='sendMessage']").click() driver.find_element_by_xpath("//div[@id='sendMessage']").send_keys("testing") - Chris
谢谢。您能否查看标记并查看是否有一个“input”或“textarea”被隐藏,但具有与您的可编辑div相同的值/innerHTML? - alecxe
1个回答

3

听起来,点击元素然后发送按键应该会有帮助:

element = driver.find_element_by_xpath("//div[@id='sendMessage']")
element.click()
element.send_keys("testing")

您可以通过使用execute_script()设置innerHTML来解决这个问题:
driver.execute_script("arguments[0].innerHTML = arguments[1];", element, "testing");

就像我说的那样,你提供的第一个选项不起作用。然而,你的第二个选项有点起作用。由于某种原因,在文本框中显示的文本是“arguments [1]”。 - Chris
@Chris 哎呀,现在请检查一下吧 :) - alecxe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接