我正在尝试使用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
有没有人知道这个问题的解决方案?
答案 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;
然后编译二进制文件。