当前位置: 首页 > 知识库问答 >
问题:

无法使用PhantomJs(和Selenium WebDriver)上传文件

濮阳茂材
2023-03-14
<form action="http://example.com/upload_photo_iframe.html" preview_div="upload_photo_div" submit_button="submit_btn" upload_field="photo_upload" target="photo_target" enctype="multipart/form-data" method="POST" id="uploadfile" name="uploadfile">
    <input type="hidden" value="CSRF_iframe_photo_upload" name="csrfname">
    <input type="hidden" value="3350427f0f068509081a09e283607214001b6912843ffb937b934208c91d9041c88faf0e66df4f3898ef202a34b669647f5b3fd9a2122e389acd3f53c33fc88b" name="csrftoken">
    <label class="file-upload">
            <p id="upload_text">Click Browse to choose a file then click Upload</p>
            <input type="file" class="file" id="photo_upload" name="photo_upload" accept="image/*">
    </label>
    <input type="hidden" value="true" name="makeLargeThumb">
    <input type="hidden" value="p" name="size">
    <input type="hidden" value="P" name="type">
    <input type="hidden" value="5120000" name="MAX_FILE_SIZE">
    <input type="hidden" value="0" name="album_id" class="album_id_hidden">
    <input type="submit" class="grey_btn" id="upload_btn" value="Upload" name="submit_btn">
<input type="hidden" name="callback" value="document.forms.uploadfile.handleReceive"><input type="hidden" name="fieldName" value="photo_upload"></form>
<input type="file" class="file" id="photo_upload" name="photo_upload" accept="image/*">

我正在使用Selenium WebDriver和PhantomJs(C#)。在此之前,我使用FireFox而不是PhantomJs,并以以下方式上传了一个文件:

_driver.FindElement(photoUploadPath).SendKeys(imagePath);

我的问题:

然而,当我使用PhantomJS时,这将崩溃。

((PhantomJSDriver)driver).executePhantomJS("var page = this; page.uploadFile('input[type=file]', '/path/to/file');");

在我看来,对于许多使用PhantomJS+Selenium的人来说,这是一个常见的问题,这让我想知道为什么这个bug还没有得到修复。

共有1个答案

利稳
2023-03-14

今天刚刚面对同样的问题并解决了它。文件上传功能在PhantomJS2.0中被破坏。有关更多信息,请查看此线程https://github.com/ariya/phantomjs/issues/12506。

因此,一般来说,您应该对PhantomJS浏览器进行自定义构建(或等待官方修复),并使用上面提到的脚本:

((PhantomJSDriver)driver).executePhantomJS("var page = this; page.uploadFile('input[type=file]', '/path/to/file');");

请注意,一些自定义构建已经在线程中可用(我在那里为Windows进行了自定义构建)。

 类似资料:
  • 我的JSP页面是这样的: 以下是我的java代码: 返回。我真的不知道原因。

  • 我使用这个网络服务上传一个文件使用泽西 //省省吧 //将上传的文件保存到新位置 当我执行我的代码我得到一个405错误!对这个问题有什么建议吗?

  • 我正在使用Phantomjs驱动程序运行一个selenium webdriver脚本headless。我在上传文件时遇到了问题,因为在普通浏览器(firefox或chrome)上,它会弹出操作系统对话框,允许我在机器中找到文件并上传。如何使用ghostDriver(Phantomjs驱动程序)来实现这一点?谢谢

  • 问题内容: 我正在尝试使用jQuery AJAX和通用处理程序上传图像文件。但是似乎文件没有被传递给处理程序。提交后始终为null:-/ 我究竟做错了什么? HTML: JS: ASHX: 问题答案: 设法使这个工作:) 这是我的代码…

  • 问题内容: 我正在尝试上传CSV文件,对其进行处理以产生结果,然后写回(下载)包含结果的新CSV文件。我对Flask非常陌生,无法获得“合适的” 对象进行迭代和处理。这是到目前为止的代码, 终端输出为 而我读的文件是 我在重复csv.reader对象时没有得到代表2行的2个列表,这是我做错了什么? 问题答案: 因此你的脚本存在一个主要问题,如此处所述,它需要一个文件对象或至少一个支持迭代器协议的对

  • 我可以从我的应用程序上传。docx文件到google drive,但当我试图上传。doc文件时,出现了这个错误: 出现错误:调用POST https://www.googleapis.com/upload/drive/v2/files时出错?uploadtype=multipart&key=aizasycm1wqpp05lbrjkspxdthjs8lz6wleowlu:(400)提供的mime类型