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