gpt4 book ai didi

post - 缺少 webrat 的 button_press 中的 POST 变量

转载 作者:行者123 更新时间:2023-12-04 16:20:56 25 4
gpt4 key购买 nike

我在尝试用 Cucumber 测试我的 php web 应用程序时遇到了麻烦。基本上, button_press 方法在提交表单时无法提交 buttonName_x 和 buttonName_y POST 变量。

我希望有人能够帮助我 - 提前致谢!

编辑:我能够为 webrat 编写一个脏补丁,以便能够暂时解决该问题。但是,我仍然很高兴听到更好的解决方案。

这是有问题的html:

                <form id="newsForm" action="/index.php?page=adminpanel&amp;view=newscontrol" method="post">
<table cellpadding="0" cellspacing="0" class="tableList">
<thead id="editor">
<tr>
<th colspan="3">News Editor</th>
</tr>
</thead>
<tbody>
<tr class="rowA">
<td colspan="3">Titel:&nbsp;<input type="text" name="subject" value="'.utf8htmlentities($subject).'" size="121" /></td>
</tr>
<tr class="rowB">
<td colspan="3">
<textarea id="content" name="content" rows="10" cols="10">'.utf8htmlentities($content).'</textarea>
</td>
</tr>
<tr class="submitRow">
<td colspan="3"><input type="image" src="res/images/design/button_preview.gif" name="previewNews" alt="preview" /> <input type="image" src="res/images/design/button_sendx.gif" name="submitNews" alt="submit" /></td>
</tr>
</tbody>
</table>
</form>

提取失败的特征:
Scenario: post news
[...]
When I insert "This is a subject!" for newsForm.subject
And I insert "Magnificient News Post" for newsForm.content
And I press newsForm.submit
[...]

var_dump($_POST) 导致:
array(2) { ["content"]=> string(22) "Magnificient News Post" ["subject"]=> string(18) "This is a subject!" } 

而通过 Firefox 的请求会导致:
array(4) { ["content"]=> string(22) "Magnificient News Post" ["subject"]=> string(18) "This is a subject!" ["submitNews_x"]=> string(1) "0" ["submitNews_y"]=> string(1) "0" } 

我的步骤定义如下:
When /^I insert "(.*?)" for (.*?)\.(.*?)$/ do |input, form, item|
within 'form[id="' + form + '"]' do |scope|
scope.fill_in(item, :with => input)
end
end

When /^I press (.*?)\.(.*?)$/ do |form, item|
within 'form[id="' + form + '"]' do |scope|
scope.click_button(item)
end
end

最后,我的 env.rb:
# RSpec
require 'rspec/expectations'

# Webrat
require 'webrat'

require 'test/unit/assertions'
World(Test::Unit::Assertions)

Webrat.configure do |config|
config.mode = :mechanize
end

class MechanizeWorld < Webrat::MechanizeAdapter
include Webrat::Matchers
include Webrat::Methods
Webrat::Methods.delegate_to_session :response_code, :response_body, :response, :redirected_to
end

World do
MechanizeWorld.new
session = Webrat::Session.new
session.extend(Webrat::Methods)
session.extend(Webrat::Matchers)
session
end

最佳答案

看起来好像这是一个 outstanding request一段时间。

从该线程链接了一些补丁,您可以将它们应用到本地的 webrat gem,尽管这可能是您已经完成的操作,因为您提到您使用了“脏补丁”!

最好对该线程发表评论,特别是回答 Bryan 的问题:

Is it sufficient to pass in an X/Y of 0,0 or 1,1, or is anyone doing anything that depends on the exact values?



你可能会看到它得到了正确的解决。

关于post - 缺少 webrat 的 button_press 中的 POST 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8402782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com