【问题标题】:How to add text to a page using python selenium?如何使用 python selenium 向页面添加文本?
【发布时间】:2015-10-10 05:42:07
【问题描述】:

我正在尝试使用 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()

【问题讨论】:

  • 如果您先单击该元素然后将键发送给它会发生什么?有什么错误吗?谢谢。
  • 对,所以如果我连续执行以下两行,则没有错误,也没有任何反应: driver.find_element_by_xpath("//div[@id='sendMessage']").click() driver.find_element_by_xpath("//div[@id='sendMessage']").send_keys("testing")
  • 谢谢。您是否还可以查看标记并查看是否存在 inputtextarea,它们可能是隐藏的,但与您的内容可编辑 div 具有相同的值/innerHTML?

标签: python html selenium


【解决方案1】:

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

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 哎呀,请立即查看 :)
猜你喜欢
  • 2021-05-16
  • 1970-01-01
  • 2012-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多