开发者

Javascript: Modify code to add elements to an array/list

Hey Guys, Javascript newbie here. I'm trying to modify some existing to code开发者_如何学JAVA to instead of returning the count of elements, to actually add each of the specified elements to an array/list

here is the original code from 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)));

}

I then have to convert the code to python, which I am far more familiar with

        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))

But changing the original code to return the array instead of an integer is where I get stuck.

Thanks for the help and the below is the error I get when I tried to run it in Python.

Traceback (most recent call last): "D:\Temp\1TestingApps\Selenium\SeleniumRC\selenium-python-client-driver-1.0.1\selenium.py", line 1218, in get_eval return self.get_string("getEval", [script,]) File "D:\Temp\1TestingApps\Selenium\SeleniumRC\selenium-python-client-driver-1.0.1\selenium.py", line 219, in get_string result = self.do_command(verb, args) File "D:\Temp\1TestingApps\Selenium\SeleniumRC\selenium-python-client-driver-1.0.1\selenium.py", line 215, in do_command raise Exception, data Exception: ERROR: Threw an exception: missing ) after argument list


I'm not sure how eval_css works, but if returns an array of strings into cssMatches, as you can get an string, and not a list, using get_eval, then you should JSONify the list in the JS scope, getting it as an string into python, and using simplejson, converting it to an python's native list.

Something like this, I guess:

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)))

I don't know if you need a return, document.write, or something like that in the js code to get the string. Please add a comment if it's needed, and I'll add it to the code :-)

Good luck!


If you update your python bindings you will have it. pip install -U selenium

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜