使用Behat,Mink&amp ;;上传文件PhantomJS

时间:2015-04-28 10:23:24

标签: selenium file-upload phantomjs behat mink

我正在尝试使用Behat上传文件。因此我写了这个简单的HTML页面:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  </head>
  <body>
    <form method="post" enctype="multipart/form-data">
      <input type="file" name="file" id="file" /><br />
      <input type="submit" />
    </form>
  </body>
</html>

和一个简单的Behat功能:

Feature: test
  Scenario: Some Test
    Given I am on "/upload.php"
    And I attach the file "/path/to/tile" to "file"

执行I attach the file ... to ...短语时,selenium 2驱动程序会生成卷曲请求并将其发送到PhantomJS:http://localhost:4444/wd/hub/session/5b9a8630-ed8e-11e4-956f-956a9ce75127/element/:wdc:1430215640681/value with params: {"value":["\/path\/to\/file"]}

除非中止请求并且PhantomJS没有以任何方式对请求做出反应,否则请求不会终止。

我已经在网上搜索过,发现有几个帖子说它确实有效,有几个说不起作用,包括github上的一个问题(https://github.com/detro/ghostdriver/issues/282)已被关闭并重新打开多次。

版本: PhantomJS:2.0.0 Behat:3.0.15 水貂:1.6.1 Mink-Selenium2-Driver:1.2.0

有没有人知道这个问题的解决方案?

1 个答案:

答案 0 :(得分:1)

由于无法使用PhantomJS v 2.0.0上传known bug的文件,是否存在此行为?

  

基本上,在Qt 4.8中进行的更改以及随后在Qt 5.0中进行的更改阻止了单击不是由用户手势引起的文件输入元素。

讨论了解决方案further in the issue thread

如果要引用,你必须在一个条件中发表评论 的 /src/qt/qtwebkit/Source/WebCore/html/FileInputType.cpp

//if (!ScriptController::processingUserGesture())
//    return;

然后编译二进制文件。