Javascript:修改代码以向数组/列表添加元素
嘿,伙计们, 这里是Javascript新手。我试图修改一些现有的to code to,而不是返回元素的计数,以实际将每个指定元素添加到数组/列表中 这是源代码 } 然后,我必须将代码转换为python,我对python更为熟悉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
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)))