本地Chrome扩展程序,用于设置input type="file"的文件。

7

我正在开发Chrome浏览器的扩展程序。
我想要使用扩展程序从这个HTML元素中选择文件。
但是我知道由于安全限制,这是不可能的。

是否有办法解除Chrome浏览器与此问题相关的安全限制,以使此操作成为可能?

谢谢。

3个回答

5

好的,我将回答自己的问题。

首先感谢Michael Dibbets和wtjones提供的答案。但是--disable-web-security--allow-file-access-from-files并没有起作用。我没有选择原生插件或从源代码扩展chrome,因为这需要时间。

解决方案:

我使用selenium javachromedriver来自动化chrome浏览器。

借助Slanec对于该问题的回答,我能够通过编程方式选择文件。

以下是java代码:

System.setProperty("webdriver.chrome.driver", "C:/.../chromedriver.exe");

WebDriver driver = new ChromeDriver();
driver.get("URL_OF_THE_PAGE");
WebElement link = driver.findElement(By.linkText("TEXT_IN_THE_LINK"));
link.click();
WebElement choose_file_input = driver.findElement(By.className("CLASS_OF_THE_INPUT"));
choose_file_input.sendKeys("PATH_TO_FILE");

谢谢!


不错的解决方案 :-) - Tschallacka

1
这是仅供个人使用的扩展吗?如果是,您可以使用 --disable-web-security 和 --allow-file-access-from-files。否则,您可能需要使用本地插件:https://code.google.com/p/firebreath/

1
我使用了你建议的方法 --disable-web-security--allow-file-access-from-files。然后我使用这个脚本来设置值。$('input').value = "path_to_file"但是我遇到了一个错误:InvalidStateError Error: An attempt was made to use an object that is not, or is no longer, usable有什么想法吗? - Buntu Linux

0

下载 Chromium 源代码并编译自己的浏览器。

安全限制是有目的的,不易被绕过。其目的在于用户可以从 Google Play 商店下载扩展程序,而不必担心该扩展程序对他们的系统构成的风险。


好主意 @Michael,如果没有其他选项的话,我会尝试一下。 - Buntu Linux

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接