Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.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
Python中的Webdriver-执行外部JavaScript_Javascript_Python_Selenium - Fatal编程技术网

Python中的Webdriver-执行外部JavaScript

Python中的Webdriver-执行外部JavaScript,javascript,python,selenium,Javascript,Python,Selenium,我喜欢用python在webdriver中执行JavaScript。 不幸的是,我试图实现它的方法不起作用。 我怎样才能正确地做到这一点 各文件规定: () 因此,我编写了以下python代码: driver = webdriver.Firefox() driver.get("http://google.com") driver.execute_script("./hello_world.js") driver.quit() 在同一目录中使用相应的hello_world.js:

我喜欢用python在webdriver中执行JavaScript。 不幸的是,我试图实现它的方法不起作用。 我怎样才能正确地做到这一点

各文件规定: ()

因此,我编写了以下python代码:

driver = webdriver.Firefox()    
driver.get("http://google.com")
driver.execute_script("./hello_world.js")    
driver.quit()
在同一目录中使用相应的hello_world.js:

alert('Hello, World!')
然而,不幸的是,它产生了一个消息语法错误:

日志:

回溯(最近一次呼叫最后一次):
文件“/sinonJS_test.py”,第44行,在
锡诺测试()
文件“/sinonJS_test.py”,第35行,sinon_测试
执行脚本(“./hello\u world.js”)
文件“/usr/local/lib/python2.7/dist packages/selenium/webdriver/remote/webdriver.py”,第401行,在execute_脚本中
{'script':script'args':已转换的\'u args})['value']
文件“/usr/local/lib/python2.7/dist packages/selenium/webdriver/remote/webdriver.py”,执行中的第173行
self.error\u handler.check\u响应(响应)
文件“/usr/local/lib/python2.7/dist packages/selenium/webdriver/remote/errorhandler.py”,第166行,在check_响应中
引发异常类(消息、屏幕、堆栈跟踪)
selenium.common.exceptions.WebDriverException:消息:语法错误
堆栈跟踪:
手边(http://google.com:68:11)
解决方案调度: 1) 尝试置换hello_world.js文件路径描述,如添加/删除文件后缀, 添加/删除绝对文件路径。不工作

注意:事实上,我在这里研究了几个类似问题的答案 就这样,他们似乎都没有解决我的问题。例如,一些只涉及 非常小的脚本通过将JavaScript声明为字符串解决了这个问题 实际的python代码。这不是我的选择,因为我需要执行更大的任务 更复杂的Java脚本(Sinon伪计时器)

像这个:

您需要为driver.execute\u脚本提供一个包含javascript的字符串作为参数。在您的情况下,如果要执行写入文件中的脚本,只需读取文件并执行即可。像这样

driver.execute_script(open("./hello_world.js").read())
在hello_world.js的适当位置


希望这有帮助。

您需要给driver.execute\u脚本一个包含javascript的字符串作为参数。在您的情况下,如果要执行写入文件中的脚本,只需读取文件并执行即可。像这样

driver.execute_script(open("./hello_world.js").read())
在hello_world.js的适当位置


希望这有帮助。

完美答案。谢谢你的帮助,赛纳特!今天晚些时候,我将发布一个关于使用特定脚本的后续问题。也许你想小心点。好的,我很乐意帮忙。你能在这里评论一下吗?我花了一点时间,因为我想自己解决这个问题。但现在我需要在JavaScript中调用函数的帮助:你让我开心!非常感谢。完美答案。谢谢你的帮助,赛纳特!今天晚些时候,我将发布一个关于使用特定脚本的后续问题。也许你想小心点。好的,我很乐意帮忙。你能在这里评论一下吗?我花了一点时间,因为我想自己解决这个问题。但现在我需要在JavaScript中调用函数的帮助:你让我开心!非常感谢。
driver.execute_script(open("./hello_world.js").read())