如何使用 PhantomJS 在 Selenium Webdriver 中用文本填充 <p> 标签?

How do I populate a <p> tag with text in Selenium Webdriver using PhantomJS?

我有一个输入表单,需要用文本填充。它是一个 div 并且它有一个子节点是一个

标签,需要填充文本才能提交表单。

我已经在 div 本身上尝试了 send_keys 但无济于事,在我的浏览器中我选择了

标签并更改了它的 TextContent 属性 结果在被文本填充的消息框中,所以我知道

标记必须被填充,但是在它上面使用 send_keys 不起作用:

textbox = driver.find_elements_by_xpath(".//div[@role='textbox']/p[1]")[0]
print(textbox)
//<selenium.webdriver.remote.webelement.WebElement (session="a0712590-511d-11e6-8e12-dbe0d5eb709e", element=":wdc:1469309865349")>

现在 send_keys:

   textbox = driver.find_elements_by_xpath(".//div[@role='textbox']/p[1]")[0]
   textbox.send_keys("This is a test")
//selenium.common.exceptions.WebDriverException: Message: Error Message => 
''undefined' is not an object (evaluating 'a.value.length')'       

我的问题是,如何将文本输入到这个文本框中?

send_keys() 仅适用于需要在其 value 属性上设置值的元素,表示 inputtextarea,但您在这里尝试设置值在需要在其 textContent 上设置的 p 元素上,因此在这里您应该尝试使用 execute_script(),如下所示:-

textbox = driver.find_element_by_xpath(".//div[@role='textbox']/p[1]")
driver.execute_script("arguments[0].textContent = arguments[1];", textbox, "This is a test")

textbox = driver.find_elements_by_xpath(".//div[@role='textbox']/p[1]")[0]
driver.execute_script("arguments[0].textContent = arguments[1];", textbox, "This is a test")

希望对您有所帮助...:)