2015-12-02 82 views
1

试图创建一个简化某些自动化的功能。execute_script不会抛出异常,但不会创建文件

当JavaScript直接调用参数时,它完美地工作,并创建文件。

browser.execute_script("HAR.clear({token: \"abcd\"})") 
browser.find_element_by_link_text("B").click() 
browser.execute_script("HAR.triggerExport({token: \"abcd\", fileName: \"name_of_file\"}).then(result => {})") 

当我尝试将它作为变量传递时,没有错误,但har文件未创建。

电话:

simple_find("B",'\\"name_of_file\\"') 

功能:

def simple_find (element, filename): 
    browser.execute_script("HAR.clear({token: \"abcd\"})") 
    browser.find_element_by_link_text(element).click() 
    options = '{token: \\"abcd\\", fileName: '+filename+'}' 
    ret=browser.execute_script("HAR.triggerExport(arguments[0]).then(result => {});return arguments[0]",options) 
    print ret 

我加入了返回构件来帮助调试的是什么过去了,这里是输出:

C:>python firefox-Manage.py 
{token: \"abcd\", fileName: \"name_of_file\"} 

它看起来完全就像前面所做的调用一样,文件没有被创建。我错过了什么?

Java版本是:1.8.0_66 硒版本:2.48.2 Python版本是:2.7.10

THX

回答

0

您的选择对象从Python中创建看起来畸形。我们没有理由与\\"包围值:

options = '{token: \\"abcd\\", fileName: '+filename+'}' 

我的猜测是,你要直接传递的字典硒而不是字符串:

options = {'token': "abcd", 'fileName': filename} 
+0

由于该诀窍。 –