Python: 在 splinter 中实际上可以访问文件上传?
Python: actually accessible file upload in splinter?
我有一个 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'
话虽如此,还有一些问题:
send_keys
真的会做我想做的事吗(即,一个可访问的文件上传,就像真实的东西一样)?如果是这样,正确的调用方式是什么?
如果没有,我还能做什么? (可能需要 js?)
啊哈! send_keys
确实有效;我只需要访问底层的 selenium 驱动程序,而不仅仅是 splinter 驱动程序:
brwsr.driver.find_element_by_id('form-widgets-body').send_keys(
PATH_TO_FILE)
我有一个 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'
话虽如此,还有一些问题:
send_keys
真的会做我想做的事吗(即,一个可访问的文件上传,就像真实的东西一样)?如果是这样,正确的调用方式是什么?如果没有,我还能做什么? (可能需要 js?)
啊哈! send_keys
确实有效;我只需要访问底层的 selenium 驱动程序,而不仅仅是 splinter 驱动程序:
brwsr.driver.find_element_by_id('form-widgets-body').send_keys(
PATH_TO_FILE)