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

0 投票
2 回答
739 浏览
提问于 2025-04-16 12:38

大家好,

我是一名刚接触Javascript的新手。我想修改一些现有的代码,不是返回元素的数量,而是把每个指定的元素添加到一个数组或列表中。

这是来自Selenium CSS计数器的原始代码:

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中运行时遇到的错误。

追踪信息(最近的调用最后): "D:\Temp\1TestingApps\Selenium\SeleniumRC\selenium-python-client-driver-1.0.1\selenium.py",第1218行,在get_eval中 return self.get_string("getEval", [script,]) 文件 "D:\Temp\1TestingApps\Selenium\SeleniumRC\selenium-python-client-driver-1.0.1\selenium.py",第219行,在get_string中 result = self.do_command(verb, args) 文件 "D:\Temp\1TestingApps\Selenium\SeleniumRC\selenium-python-client-driver-1.0.1\selenium.py",第215行,在do_command中 raise Exception, data 异常:错误:抛出异常:参数列表后缺少)

2 个回答

1

我不太清楚 eval_css 是怎么工作的,但如果它把一组字符串放进 cssMatches 里,而你又可以用 get_eval 得到一个字符串,而不是列表,那你就应该在 JavaScript 的范围内把这个列表转成 JSON 格式,这样就能把它作为字符串传到 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)))

我不知道你是否需要在 JavaScript 代码里加一个返回值、document.write,或者其他什么东西来获取这个字符串。如果需要的话,请留言告诉我,我会把它加到代码里 :-)

祝你好运!

0

如果你更新一下你的Python绑定,就能解决这个问题。你可以用这个命令:pip install -U selenium

撰写回答