嘿伙计们, 这里的Javascript新手。我正在尝试修改一些现有的代码,而不是返回元素的 count ,以实际将每个指定的元素添加到数组/列表
的原始代码private int getCSSCount(String aCSSLocator){
String jsScript = "var cssMatches = eval_css(\"%s\", window.document);cssMatches.length;";
return Integer.parseInt(selenium.getEval(String.format(jsScript, aCSSLocator)));
}
然后我必须将代码转换为python,我更熟悉
def count_css_matches(self, css_locator):
java_script_code = '''
var cssMatches = eval_css("%s", window.document);
cssMatches.length;''' % css_locator
return int(self.selenium.get_eval(java_script_code))
但更改原始代码以返回数组而不是整数是我陷入困境的地方。
感谢您的帮助,以下是我尝试在Python中运行时出现的错误。
追踪(最近一次通话): get_eval中的“D:\ Temp \ 1TestingApps \ Selenium \ SeleniumRC \ selenium-python-client-driver-1.0.1 \ selenium.py”,第1218行 return self.get_string(“getEval”,[script,]) get_string中的文件“D:\ Temp \ 1TestingApps \ Selenium \ SeleniumRC \ selenium-python-client-driver-1.0.1 \ selenium.py”,第219行 result = self.do_command(动词,args) do_command中的文件“D:\ Temp \ 1TestingApps \ Selenium \ SeleniumRC \ selenium-python-client-driver-1.0.1 \ selenium.py”,第215行 提高异常,数据 异常:错误:在参数列表
之后抛出异常:丢失)答案 0 :(得分:1)
我不确定eval_css
是如何工作的,但如果将一个字符串数组返回cssMatches
,因为你可以使用get_eval
得到一个字符串而不是一个列表,然后你应该JSONify JS范围中的列表,将它作为字符串添加到python中,并使用simplejson
,将其转换为python的本机列表。
这样的事情,我想:
import json
def count_css_matches(self, css_locator):
java_script_code = '''
var cssMatches = eval_css("%s", window.document);
JSON.stringify(cssMatches.length);''' % css_locator
return json.loads(self.selenium.get_eval(java_script_code)))
我不知道你是否需要在js代码中使用return,document.write或类似的东西来获取字符串。如果需要,请添加评论,我会将其添加到代码中: - )
祝你好运!答案 1 :(得分:0)
如果你更新你的python绑定,你将拥有它。 pip install -U selenium