我正在尝试将文字发送到文本字段。
binary = FirefoxBinary("C:\Program Files\Mozilla Firefox\Firefox.exe")
driver = webdriver.Firefox(firefox_binary=binary)
text = 'sending something to the text area'
input_field = driver.find_element_by_css_selector('.trumbowyg-editor')
input_field.clear()
driver.execute_script("arguments[0].value = arguments[1];", input_field, 'sending something to the text area')
但它不起作用,没有做任何事情,也没有任何错误。
另外,我尝试了以下方式:
binary = FirefoxBinary("C:\Program Files\Mozilla Firefox\Firefox.exe")
driver = webdriver.Firefox(firefox_binary=binary)
text = 'sending something to the text area'
input_field = driver.find_element_by_css_selector('.trumbowyg-editor')
input_field.clear()
driver.send_keys(text)
它有效。但是,我想用javascript代码发送文本,因为它比driver.send_keys()
命令更快。
答案 0 :(得分:0)
如果python绑定到selenium的工作方式类似于java绑定,那么该脚本执行器期望的是一个字符串,其中包含可以在浏览器控制台中执行的javascirpt,以实现所需的结果。
在这种情况下,将input_field(可能是某个python对象)传递给脚本执行器将无法解决问题。你要传递给它的是:
driver.execute_script('document.getElementsByClassName("trumbowyg-editor")[0].setAttribute("value", arguments[0]);','sending something to the text area')
意味着搜索元素也必须在脚本中完成。