Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么驱动程序_execute的值为空_Javascript_Python 3.x_Selenium_Firefox_Selenium Webdriver - Fatal编程技术网

Javascript 为什么驱动程序_execute的值为空

Javascript 为什么驱动程序_execute的值为空,javascript,python-3.x,selenium,firefox,selenium-webdriver,Javascript,Python 3.x,Selenium,Firefox,Selenium Webdriver,我正在尝试将文本发送到textfield 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

我正在尝试将文本发送到textfield

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

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

在这种情况下,将input_字段(可能是某个python对象)传递给脚本执行器不会起作用。您希望传递给它的是:

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

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

这对我不起作用。我发现错误,参数[1]未定义。因此,我找到了另一种解决方法:驱动程序。执行_脚本(“参数[0]。innerHTML=arguments[1];”,输入_字段,“向文本区域发送内容”),但这样会出现奇怪的问题,替换的值未保存。确定。我的坏(我不是来自python世界)。Ofc它应该是参数[0],因为我已经从函数调用中删除了一个参数。另外,我有一个输入错误类名必须没有“.”前缀。这里的关键是首先在浏览器控制台中试用该行。只有当它在那里工作时,最好用脚本执行器运行它。我明白了。。。但问题是,当我使用
driver.execute_脚本('document.getElementsByClassName(“trumbowyg编辑器”)[0].value=arguments[0];','sending something to the text area')时,它不会再次保存。
当我更改为
driver.execute_脚本('document.getElementsByClassName(“trumbowyg编辑器”)[0].innerHTML=arguments[0];',“向文本区域发送内容”)
然后它就被写入了。这是因为您执行的脚本并没有执行您希望它执行的操作。正如我在回答中所写的,如果它在控制台中的开发者工具中工作,那么它应该与脚本执行器一起工作。它应该是:“document.getElementsByClassName”(“trum‌​bowyg编辑器“)[0].setAttribute(“值”,参数[0]‌);' 也编辑了答案。