execute_script不会抛出异常,但不会创建文件

时间:2015-12-02 21:13:06

标签: python selenium-webdriver

尝试创建一个简化某些自动化的功能。

当使用参数直接调用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

1 个答案:

答案 0 :(得分:0)

从Python创建的选项对象看起来格格不入。我没有理由用\\"包围值:

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

我的猜测是你希望将字典直接传递给selenium而不是字符串:

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