使用 Behat、Mink 和 PhantomJS 上传文件
File upload with Behat, Mink & PhantomJS
我正在尝试使用 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驱动生成一个curl请求发送给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
行为:3.0.15
水貂:1.6.1
Mink-Selenium2-驱动程序:1.2.0
有人知道这个问题的有效解决方案吗?
是否由于无法上传 PhantomJS v 2.0.0 known bug 文件而存在此行为?
Basically, a change made in Qt 4.8 and incorporated subsequently in Qt 5.0 prevented clicking on file input elements that were not caused by user gestures.
讨论了解决方案further in the issue thread。
要引用,你必须在
中评论一个if条件
/src/qt/qtwebkit/Source/WebCore/html/FileInputType.cpp
//if (!ScriptController::processingUserGesture())
// return;
然后编译二进制文件。
我正在尝试使用 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驱动生成一个curl请求发送给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 行为:3.0.15 水貂:1.6.1 Mink-Selenium2-驱动程序:1.2.0
有人知道这个问题的有效解决方案吗?
是否由于无法上传 PhantomJS v 2.0.0 known bug 文件而存在此行为?
Basically, a change made in Qt 4.8 and incorporated subsequently in Qt 5.0 prevented clicking on file input elements that were not caused by user gestures.
讨论了解决方案further in the issue thread。
要引用,你必须在
中评论一个if条件
/src/qt/qtwebkit/Source/WebCore/html/FileInputType.cpp
//if (!ScriptController::processingUserGesture())
// return;
然后编译二进制文件。