我有一个输入表单,需要用文本填充。它是一个 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 属性上设置值的元素,表示 input 和 textarea,但在这里你试图在 p 元素上设置值,而这需要在它们的 textContent 上设置,所以在这里你应该尝试使用 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")
希望对您有所帮助...:)
