javascript - Python:实际上可以在 splitter 中访问文件上传吗?

标签 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?)

最佳答案

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

    brwsr.driver.find_element_by_id('form-widgets-body').send_keys(          
        PATH_TO_FILE)  

关于javascript - Python:实际上可以在 splitter 中访问文件上传吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32054430/

相关文章:

java - 如何在 Selenium 中单击带有 anchor 标记的图像或图标

android - 无法执行 dex : Java heap space Java heap space

javascript - 如何使用 React-Router 通过 <Link> 将额外的 props 传递到新页面?

javascript - 如何将链接 promise 与数组的循环一起使用?

python - 在 curio 中等待事件的问题

python - 从 apache2 开始 selenium session

Javascript在循环中将函数插入数组

javascript - Google Autocomplete Places API 不会通过 TAB 触发更改事件

python - 什么是 [ :, :-1] in python?

java - 如何使用 Selenium 在 Java 方法中初始化另一个 WebElement