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

先上代码:

import execjs  
#执行本地的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中的方法,具体方法如下:

function enString(data)  
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文件中的方法呢的主要内容,如果未能解决你的问题,请参考以下文章

JS中怎么调用外部的JS库

如何在js文件中调用另一个js中的方法(详细请进)

如何在html中调用js代码

Python 调用JS文件中的函数

如何在一个js文件里调用另一个js文件里的function

请问一个js文件中如何调用另一个js文件的方法