【问题标题】:Local Chrome extension to set file of input type="file"本地 Chrome 扩展设置输入类型=“文件”的文件
【发布时间】:2013-03-06 13:54:27
【问题描述】:

我正在为 Chrome 浏览器开发一个扩展程序。 我不想使用扩展名从input type="file" html 元素中选择文件。 但我知道由于安全限制,这是不可能的。

有没有办法移除与此问题相关的 Chrome 的安全限制,以便实现这一点。

谢谢。

【问题讨论】:

    标签: javascript file-upload google-chrome-extension file-io


    【解决方案1】:

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

    首先感谢 Michael Dibbets 和 wtjones 的回答。 --disable-web-security and --allow-file-access-from-files 没用。 我没有选择原生插件和从源代码扩展 chrome,因为这似乎需要时间。

    解决办法:

    我使用 chromedriverselenium java 来自动化 chrome。

    Slanec's Answer to this question 的帮助下,我能够务实地选择文件。

    这里是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");
    

    谢谢!

    【讨论】:

    • 不错的解决方案 :-)
    【解决方案2】:

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

    【讨论】:

    • 我使用了你建议的方法--disable-web-security and --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 任何想法?
    【解决方案3】:

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

    安全限制是有目的的,不能被规避(无论如何都不容易) 目的是用户可以从 google play 商店下载扩展程序,而不必担心扩展程序对其系统造成的风险。

    【讨论】:

    • 好主意@Michael,如果没有其他选择的话。如果是这样,我会试一试。
    猜你喜欢
    • 1970-01-01
    • 2014-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-12
    • 2016-10-03
    • 2013-05-09
    相关资源
    最近更新 更多