2014-06-19 45 views
1

我需要通過傳遞一個字符串數組來執行頁面上的javascript函數。我想避免不得不打電話browser.execute_script次數。Splinter:如何將參數傳遞給execute_script?

list_of_strings = ['a','b','c'] 

#js code runs through all the strings 
result = browser.execute_script("function findTexts(textList){//code here}", list_of_strings) 

回答

1

轉儲蟒蛇名單JSON和使用字符串格式化

import json 

json_array = json.dumps(list_of_strings) 
result = browser.execute_script("function findTexts(%s){//code here}" % json_array) 

這裏是JS代碼它產生:

>>> import json 
>>> list_of_strings = ['a','b','c'] 
>>> json_array = json.dumps(list_of_strings) 
>>> "function findTexts(%s){//code here}" % json_array 
'function findTexts(["a", "b", "c"]){//code here}' 
在JavaScript代碼
+0

,我將如何通過遍歷列表?如果列表中的項目數量不可預測? – KJW

+0

@KJW只是使用基本的JavaScript循環,請參閱http://stackoverflow.com/questions/3010840/loop-through-array-in-javascript。 – alecxe

+0

我最終做了這個'browser.evaluate_script(「findTexts(%s);函數findTexts(list){//做一些列表數組}};'結果'evaluate_script'返回結果。 – KJW