为什么driver_execute具有空值

时间:2017-05-13 13:17:48

标签: javascript python-3.x selenium firefox selenium-webdriver

我正在尝试将文字发送到文本字段。

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()命令更快。

1 个答案:

答案 0 :(得分:0)

如果python绑定到selenium的工作方式类似于java绑定,那么该脚本执行器期望的是一个字符串,其中包含可以在浏览器控制台中执行的javascirpt,以实现所需的结果。

在这种情况下,将input_field(可能是某个python对象)传递给脚本执行器将无法解决问题。你要传递给它的是:

driver.execute_script('document.getElementsByClassName("trumbowyg-editor")[0].se‌​tAttribute("value", arguments[0]);','sending something to the text area')

意味着搜索元素也必须在脚本中完成。