Python:在splinter中实际可访问的文件上传?

时间:2015-08-17 15:41:47

标签: javascript python selenium splinter browser-testing

我有一个Web应用程序,允许用户上传XML样式的文件,然后在浏览器中对其进行修改。

我正在尝试使用splinter测试场景。如果我有正确的输入(id="form-widgets-body"):

enter image description here

...我发现它没问题,并且使用attach_file的名称:

(Pdb)     brwsr.find_by_id('form-widgets-body')
[<splinter.driver.webdriver.WebDriverElement object at 0x7f2be3a32dd0>]

brwsr.attach_file('form.widgets.body', PATH_TO_FILE)

attach_file的问题在于它实际上并不能让我访问该文件。也许它只是告诉输入已填写的东西,这对其他类型的测试很好? (例如,在上传文档X之前,您无法进入财务应用中的下一个屏幕)

我尝试了send_keys,但它没有按预期工作:

(Pdb)     brwsr.find_by_id('form-widgets-body').send_keys
*** AttributeError: 'ElementList' object has no attribute 'send_keys'
(Pdb)     brwsr.find_by_id('form-widgets-body')[0].send_keys
*** AttributeError: 'WebDriverElement' object has no attribute 'send_keys'

据说,有些问题:

  1. send_keys实际上会做我想要的(即,可访问的文件上传,就像真实的一样)?如果是这样,正确的方式是什么?

  2. 如果没有,我还能做些什么? (可能需要js?)

1 个答案:

答案 0 :(得分:1)

啊哈! send_keys确实有效;我只需要访问底层的selenium驱动程序而不仅仅是分裂的驱动程序:

    brwsr.driver.find_element_by_id('form-widgets-body').send_keys(          
        PATH_TO_FILE)  
相关问题