Open laran opened 13 years ago
Here's some code for those steps if you want to integrate it:
When /^I click the (check box|button|radio button|pop up button|pop up menu button) (named|labeled|titled|identified by) "([^"]*)"$/ do |component_type, component_field_type, component_field_value|
Melomel::Cucumber.run! do
component = nil
classes = Melomel::Flex.get_component_classes(component_type)
case component_field_type
when 'named'
component = Melomel::Cucumber.find_by_name!(classes, component_field_value)
when 'titled'
component = Melomel::Cucumber.find_by_title!(classes, component_field_value)
when 'identified by'
component = Melomel::Cucumber.find_by_id!(classes, component_field_value)
when 'labeled'
component = Melomel::Cucumber.find_by_label!(classes, component_field_value)
end
Melomel.click(component)
end
end
When /^I type "([^"]*)" in the (text field|text area) (named|labeled|titled|identified by) "([^"]*)"$/ do |text, component_type, component_field_type, component_field_value|
Melomel::Cucumber.run! do
component = nil
classes = Melomel::Flex.get_component_classes(component_type)
case component_field_type
when 'named'
component = Melomel::Cucumber.find_by_name!(classes, component_field_value)
when 'titled'
component = Melomel::Cucumber.find_by_title!(classes, component_field_value)
when 'identified by'
component = Melomel::Cucumber.find_by_id!(classes, component_field_value)
when 'labeled'
component = Melomel::Cucumber.find_labeled!(classes, component_field_value)
end
component.setFocus()
component.text = text
end
end
When /^I select "([^"]*)" on the (list|combo box) (named|titled|identified by|labeled) "([^"]*)" in the window (named|titled|identified by|labeled) "([^"]*)"$/ do |value, component_type, component_field_name, component_field_value, window_field_name, window_field_value|
Melomel::Cucumber.run! do
window = nil
case window_field_name
when 'named'
window = Melomel.find!("mx.containers.TitleWindow", :name => window_field_value)
when 'titled'
window = Melomel.find!("mx.containers.TitleWindow", :title => window_field_value)
when 'identified by'
window = Melomel.find!("mx.containers.TitleWindow", :id => window_field_value)
when 'labeled'
window = Melomel.find!("mx.containers.TitleWindow", :label => window_field_value)
end
component = nil
classes = Melomel::Flex.get_component_classes(component_type)
case component_field_name
when 'named'
component = Melomel.find!(classes, window, :name => component_field_value)
when 'titled'
component = Melomel.find!(classes, window, :title => component_field_value)
when 'identified by'
component = Melomel.find!(classes, window, :id => component_field_value)
when 'labeled'
component = Melomel.find!(classes, window, :label => component_field_value)
end
component.setFocus()
labels = Melomel.items_to_labels!(component, component.dataProvider)
# Loop over labels and set the selected index when we find a match
index = nil
labels.length.times do |i|
if labels[i] == value
index = i
end
end
raise "Cannot find '#{value}' on #{component_type}" if index.nil?
component.selectedIndex = index
end
end
When /^I click the (check box|button|radio button|pop up button|pop up menu button) (named|titled|identified by|labeled) "([^"]*)" in the window (named|titled|identified by|labeled) "([^"]*)"$/ do |component_type, component_field_name, component_field_value, window_field_name, window_field_value|
Melomel::Cucumber.run! do
window = nil
case window_field_name
when 'named'
window = Melomel.find!("mx.containers.TitleWindow", :name => window_field_value)
when 'titled'
window = Melomel.find!("mx.containers.TitleWindow", :title => window_field_value)
when 'identified by'
window = Melomel.find!("mx.containers.TitleWindow", :id => window_field_value)
when 'labeled'
window = Melomel.find!("mx.containers.TitleWindow", :label => window_field_value)
end
component = nil
classes = Melomel::Flex.get_component_classes(component_type)
case component_field_name
when 'named'
component = Melomel::Cucumber.find_by_name!(classes, component_field_value, window)
when 'titled'
component = Melomel::Cucumber.find_by_title!(classes, component_field_value, window)
when 'identified by'
component = Melomel::Cucumber.find_by_id!(classes, component_field_value, window)
when 'labeled'
component = Melomel::Cucumber.find_by_label!(classes, component_field_value, window)
end
component.setFocus()
Melomel.click(component)
end
end
Cucumber steps right now are like this:
I have components which sometimes have an id, sometimes a label, sometimes a title, sometimes a name. The steps right now only support label or id.
So, I'd like to suggest a more descriptive format.
I think this is much more explicit and easy to work with.
I've created steps similar to these locally and they help.
Also, I sometimes have trouble getting handles on components in windows. So I've added steps like this:
I'd like to suggest adding these steps as well.