Rails seleniumテストの位置決めといくつかのイベントの解釈
最近cucumberテストを书いているうちに、いくつかの问题があって、もともとシステム的に整理するつもりでしたが、この时間がないようで、いくらでも覚えて、雑然と受け取ることができます.
Railsプロジェクトでは、AJAXを使用する場合、検収テストページはcucumberではだめです.cumber自体がwebratを使用したシミュレーションブラウザの動作であるためです.
では、seleniumでテストする必要があります.この場合、いくつかのイベントのパッケージが異なります.
例:
書いてもいいですよ
実際にはstep定義を見てpressが呼び出したclickであることを知っていますbutton
もし、私たちのページajaxが複数のsubmitボタン、または複数のinputボックスを呼び出し、同じnameを使用している場合(ループによって生成される場合もあります)
ではcucumberの下でscopeを使うかもしれません
しかし、seleniumはwithinをサポートしていないことがわかります.
では、パッケージされたselenium構文を使用してテストする必要があります.
ここで、locatorがサポートできる構文は次のとおりです.
参照
id=id
name=name
dom=javascriptExpression
xpath=xpathExpression
link=textPattern
css=cssSelectorSyntax
詳細については、
http://seleniumhq.org/docs/04_selenese_commands.html
http://release.seleniumhq.org/selenium-core/0.8.0/reference.html
seleniumで属性をhtml範囲内に配置するかどうかについて
下編を参照
Railsプロジェクトでは、AJAXを使用する場合、検収テストページはcucumberではだめです.cumber自体がwebratを使用したシミュレーションブラウザの動作であるためです.
では、seleniumでテストする必要があります.この場合、いくつかのイベントのパッケージが異なります.
例:
<%= image_submit_tag "image_file_name", :id => "submit" %>
書いてもいいですよ
And I press "submit"
実際にはstep定義を見てpressが呼び出したclickであることを知っていますbutton
もし、私たちのページajaxが複数のsubmitボタン、または複数のinputボックスを呼び出し、同じnameを使用している場合(ループによって生成される場合もあります)
ではcucumberの下でscopeを使うかもしれません
When /^I (press|follow|check|uncheck|choose) "([^\"]*)" for (.*) whose (.*) is "([^\"]*)"$/ do |action, whatyouclick, class_name, var_name, value|
unless var_name == "id" then
id = eval("\"#{class_name}\".classify.constantize.find_by_#{var_name}(\"#{value}\").id.to_s")
else
id = value
end
within("tr[id=row_#{class_name}_#{id}]") do
case action
when "press"
click_button(whatyouclick)
when "follow"
click_link(whatyouclick)
when "check"
check(whatyouclick)
when "uncheck"
uncheck(whatyouclick)
when "choose"
uncheck(whatyouclick)
end
end
end
しかし、seleniumはwithinをサポートしていないことがわかります.
では、パッケージされたselenium構文を使用してテストする必要があります.
When /(?:|I )press "([^"]*)" via ajax$/ do |locator|
selenium.click "css=#{locator}"
end
When /^(?:|I )fill in "([^\"]*)" with "([^\"]*)" via ajax$/ do |locator, value|
selenium.type( "css=#{locator}",value )
end
Given /^I check "([^"]*)" via ajax$/ do |locator|
selenium.check "css=#{locator}"
end
ここで、locatorがサポートできる構文は次のとおりです.
参照
id=id
name=name
dom=javascriptExpression
xpath=xpathExpression
link=textPattern
css=cssSelectorSyntax
詳細については、
http://seleniumhq.org/docs/04_selenese_commands.html
http://release.seleniumhq.org/selenium-core/0.8.0/reference.html
seleniumで属性をhtml範囲内に配置するかどうかについて
下編を参照