1

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

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

在此处输入图像描述

...我可以找到它没有问题,以及使用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 吗?)

4

1 回答 1

2

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

    brwsr.driver.find_element_by_id('form-widgets-body').send_keys(          
        PATH_TO_FILE)  
于 2015-08-17T15:53:51.470 回答