Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript:修改代码以向数组/列表添加元素_Javascript_Python_Css_Selenium - Fatal编程技术网

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

Javascript:修改代码以向数组/列表添加元素,javascript,python,css,selenium,Javascript,Python,Css,Selenium,嘿,伙计们, 这里是Javascript新手。我试图修改一些现有的to code to,而不是返回元素的计数,以实际将每个指定元素添加到数组/列表中 这是源代码 } 然后,我必须将代码转换为python,我对python更为熟悉 def count_css_matches(self, css_locator): java_script_code = ''' var cssMatches = eval_css("%s", window.doc

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

这是源代码

}

然后,我必须将代码转换为python,我对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行 返回self.get_字符串(“getEval”,[script,]) 文件“D:\Temp\1TestingApps\Selenium\SeleniumRC\Selenium-python-client-driver-1.0.1\Selenium.py”,第219行,get_字符串 结果=self.do_命令(动词,args) do_命令中的文件“D:\Temp\1TestingApps\Selenium\SeleniumRC\Selenium-python-client-driver-1.0.1\Selenium.py”,第215行 引发异常、数据
异常:错误:抛出异常:丢失)在参数列表之后

我不确定
eval_css
是如何工作的,但是如果在
cssMatches
中返回一个字符串数组,因为可以使用
get_eval
获取字符串,而不是列表,那么应该在JS范围中对列表进行JSONify,将其作为字符串获取到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代码中是否需要返回、document.write或类似的东西来获取字符串。如果需要,请添加注释,我会将其添加到代码:-)


祝你好运

如果您更新python绑定,您将拥有它
pip安装-U selenium

谢谢Gonzalo,但当我在Python中尝试您的代码时,它实际上只返回了一个整数,而不是字符串:。如果您只使用我发布的原始javascript代码,并让它返回一个元素数组,可能会有所帮助。然后下一步是对代码进行“Pythonize”。看,在Selenium的官方参考中,他们使用
.toString()
将数组转换为逗号分隔的字符串,然后拆分值:。检查是否有其他错误,因为这似乎是处理此类问题的方法。对不起,这是链接:好的,我做到了。。。但我应该看到什么变化?另外,谢谢你关于硒的好书!!get_css_计数现在为selenium
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)))