Javascript:修改代码以将元素添加到数组/列表

时间:2011-02-27 19:09:49

标签: javascript python css selenium

嘿伙计们, 这里的Javascript新手。我正在尝试修改一些现有的代码,而不是返回元素的 count ,以实际将每个指定的元素添加到数组/列表

这是Selenium CSS counter

的原始代码
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行     提高异常,数据 异常:错误:在参数列表

之后抛出异常:丢失)

2 个答案:

答案 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