python中如何调用js文件中的方法呢
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中如何调用js文件中的方法呢相关的知识,希望对你有一定的参考价值。
一般的js文件在python中很好调用,但是当js中存在闭环的时候,python中为什么怎么调用都不行呢,哪位大牛帮帮我,万分感激。
js代码如下:
(function($w)
if(typeof $w.RSAUtils === 'undefined')
var RSAUtils =$w.RSAUtils =;
RSAUtils.add_e = function(a, b)
return a+b;
;
)(window);
python中调用该js中方法的代码如下:
import execjs
def test_add(a, b):
f = open("test.js").read().decode('utf-8')
ctx =execjs.compile(f)
print ctx.call('RSAUtils.add_e', a, b)
test_add(1, 3)
运行python脚本后,一直提示错误,错误信息如下:
Traceback (most recent call last):
File "C:/Users/w00396235/PycharmProjects/untitled/test.py", line 49, in <module>
test_add(1, 3)
File "C:/Users/w00396235/PycharmProjects/untitled/test.py", line 40, in test_add
print ctx.call('add_e', a, b)
File "C:\Python27\lib\site-packages\execjs\_abstract_runtime_context.py", line 37, in call
return self._call(name, *args)
File "C:\Python27\lib\site-packages\execjs\_external_runtime.py", line 87, in _call
return self._eval("identifier.apply(this, args)".format(identifier=identifier, args=args))
File "C:\Python27\lib\site-packages\execjs\_external_runtime.py", line 73, in _eval
return self.exec_(code)
File "C:\Python27\lib\site-packages\execjs\_abstract_runtime_context.py", line 18, in exec_
return self._exec_(source)
File "C:\Python27\lib\site-packages\execjs\_external_runtime.py", line 83, in _exec_
return self._extract_result(output)
File "C:\Python27\lib\site-packages\execjs\_external_runtime.py", line 165, in _extract_result
raise exceptions.ProgramError(value)
execjs._exceptions.ProgramError
1、打开pycharm开发工具,点击File菜单,选择Settings...,进行第三方模块安装;输入selenium,点击Install Package。
2、接着在python项目的指定文件夹下,鼠标右键新建python文件,输入文件名并点击Python file。
3、打开新建的文件,依次导入selenium、webdriver和time。
4、调用webdriver模块中的Chrome(),使用get()获取对应网址的内容。
5、调用find_element_by_id()获取对应页面元素,然后调用按钮点击事件。
6、修改get()方法中的请求路径,然后保存代码并运行文件,查看运行结果。
参考技术A先上代码:
#执行本地的js
def get_js():
# f = open("D:/WorkSpace/MyWorkSpace/jsdemo/js/des_rsa.js",'r',encoding='UTF-8')
f = open("./js/des_rsa.js", 'r', encoding='UTF-8')
line = f.readline()
htmlstr = ''
while line:
htmlstr = htmlstr + line
line = f.readline()
return htmlstr
jsstr = get_js()
ctx = execjs.compile(jsstr)
print(ctx.call('enString','123456'))
1,首先通过,get_js方法,读取本地的 des_rsa.js 文件。
2,调用 execjs.compile() 编译并加载 js 文件内容。
3,使用call()调用js中的方法,具体方法如下:
var key1 = "YHXWWLKJYXGS";
var key2 = "ZFCHHYXFL10C";
var key3 = "DES";
var enchex = strEnc(data,key1,key2,key3);
return enchex;
其中第一个参数“enString”为方法名,第二个参数开始,为js方法所需的参数
如何在js文件中调用另一个js中的方法(详细请进)
比如有一个文件叫check.js,里面有个方法check();另外有一个ajax.js文件,里面有操作ajax的3个方法(创建XMLHttpRequest对象,回调函数,提交给servlet的方法),如何在check.js里面调用ajax中的方法?
方法:直接调用对方的函数就行。
步骤:
1、两个或者多个js文件加载到同一个页面中
2、js文件中的方法直接相互访问。
示例:
a.js中定义一个方法function a()
b.js中定义一个方法
function b()
在a.js中访问b.js中方法
b();//就可以直接访问b方法 参考技术A 直接调用就可以了,在页面上包含的时候注意先后顺序就行。
<script language="javascript" src="ajax.js"></script>
<script language="javascript" src="check.js"></script> 参考技术B Js文件中调用其它Js函数的方法:
1、例如有这样一个html,里面有一个按钮,当按下时调用b.js文件中的方法b()。而b()中又要调用a.js文件中的方法a()。那我们应该怎么做呢?
首先,在html中引入b.js,并在之后加入引用语句。必须注意,将要引入的Js文件代码放在下面。
b.js文件中引入a.js,内容如下:
new_element=document.createElement("script");
new_element.setAttribute("type","text/javascript");
new_element.setAttribute("src","a.js");// 在这里引入了a.js
document.body.appendChild(new_element);
function b()
a();
在b.js文件中前4行代码中我们引入了a.js文件,并在第7行代码中调用了a.js代码中的a()方法。
注意:一定要放在body下面。
因为在b.js中用到了body(document.body.appendChild(new_element);)
如果将引如b.js的代码放在body上面,也就是说, 进入页面后,还没有生成body就已经执行b.js里的document.body.appendChild(new_element);了。 这时body不存在就会抛javascript错误。 参考技术C
可以使用JavaScript的document.write方法引入js文件。
举例如下:
document.write('<script src="jquery.js"><\\/script>'); //引入当前目录下的jquery.js文件。以上代码已本地测试可用,你可以试一下。
以上是关于python中如何调用js文件中的方法呢的主要内容,如果未能解决你的问题,请参考以下文章