gpt4 book ai didi

javascript - 使用 Fluentlenium 在 dropzone.js 中上传文件

转载 作者:行者123 更新时间:2023-11-30 06:27:07 41 4
gpt4 key购买 nike

我正在寻找使用 Fluentlenium 和 DropZone.js ( http://www.dropzonejs.com/ ) 编写一个上传文件的测试。 Dropzone.js 在模式下工作,然后您可以以正常方式拖放或上传。

一旦您点击上传测试就会崩溃,因为您不再在浏览器中。

我发现很多帖子使用以下方法在 Selenium 中使用它:

WebElement fileInput = driver.findElement(By.xpath("//input[@type='file']"));
fileInput.sendKeys("C:/path/to/file.jpg");

但是我不能将 key 发送给任何东西,因为在使用 DropZone.js 时它们甚至不是输入类型 ="file"。

我看到的唯一输入类型都是隐藏类型。

<input type="hidden" name="key" value="temp/${filename}">
<input type="hidden" name="AWSAccessKeyId" value="secret">
<input type="hidden" name="acl" value="private">
<input type="hidden" name="success_action_redirect" value="">
<input type="hidden" name="policy" value="secret=">
<input type="hidden" name="signature" value="secret">
<input type="hidden" name="Content-Type" value="application">

我们也使用 Amazon Web Server 上传文档,似乎一切都在使用以下脚本:

<script id="hiddenKeyPairs" type="text/javascript">
var hiddenKeyPairs = {
key: 'temp/${filename}',
AWSAccessKeyId: 'secret',
acl: 'private',
"success_action_redirect": '',
policy: 'secret',
signature: 'secret/secret',
"Content-Type": 'application'
};

var formAction = 'https://secret.com/';

</script>

位于我的页面上。

我在 https://github.com/FluentLenium/FluentLenium#driver 上没有看到任何有帮助的东西|为此。

我是否需要以某种方式将文件发送到上述脚本中的 key 散列?

有什么想法吗?

最佳答案

我不确定 AWS 部分,但我有一个关于文件上传 ( Programmatically upload / add file via Dropzone e.g. by Selenium ) 的类似问题,以及一些可能的解决方案。我觉得它们不是很健壮,但基本上:

方法 1:使用 Java Robot 模拟 GUI 操作 -

    // this opens the file browser window
driver.findElement(By.id("uploadDropzone")).click();

// put the file path in clipboard, paste (C-V) to the window, enter.
StringSelection ss = new StringSelection("some file path");
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss, null);
Robot robot = new Robot();
Thread.sleep(2000);
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
Thread.sleep(5000); // need some wait for GUI action to work...
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER)

方法 2:在代码中完成所有操作(hacky...)- 是的,有一个文件输入元素,但仅在 Dropzone.js 本身中定义,可以使用 $ 选择(".dz-hidden-input")。但是您还必须使其可见(因为 Selenium 只能作用于可见元素),然后可以对其调用 sendKeys。之后,再次在 Javascript 中,从该元素中检索 File 对象,然后传递给 Dropzone 对象上的 addFile(file)

关于javascript - 使用 Fluentlenium 在 dropzone.js 中上传文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20387247/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com