开发者

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

开发者 https://www.devze.com 2023-02-14 05:55 出处:网络
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

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

精彩评论

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