From: Rick DeNatale Date: 2007-04-06T22:13:59+09:00 Subject: Re: invoke base class nested method On 4/3/07, aidy wrote: > Hi, > > I have an ObjectMap class that contains other classes. I inherit from > the base class.Could someone tell me how I can run a nested class > method from the inherited class? > > Here is the code: > > > > class ObjectMap > @@ie = Watir::IE.new > #each page has a class where objects of that class are mapped > class Login > def username;@@ie.text_field(:name, 'user_name');end > def password;@@ie.text_field(:name, 'password');end > def remember_me;@@ie.checkbox(:name, 'remember_me');end > def sign_in;@@ie.button(:value, 'Sign in');end > end > class DashBoard > #more methods > end > end > > class A_Test < ObjectMap > > @@ie.goto('www.updatelog.com') > @@ie.maximize > #how do I run the username method? > > end > > > Need to, for example, run the username method? Same way you'd do it from the superclass: class A_Test < ObjectMap Login.new.username end Note that username is not a method of ObjectMap but of the nested class ObjectMap::Login You could also do this from outside ObjectMap and it's subclasses like so: ObjectMap::Login.new.username If you made login and it's brethren class methods: class Login def self.username;@@ie.text_field(:name, 'user_name');end def self password;@@ie.text_field(:name, 'password');end def self.remember_me;@@ie.checkbox(:name, 'remember_me');end def sign_in;@@ie.button(:value, 'Sign in');end end Then the above would be class A_Test < ObjectMap Login..username end or from outside: ObjectMap::Login.username Lacking more information about what you are really trying to accomplish, your code looks a little odd to my eye. ObjectMap seems like it really should be a module rather than a class since from what you've shown it's really acting as what looks like a name space. You're using class variables which always raises a yellow flag in my mind. Of course some of this could be Watir practice and I've never used Watir. -- Rick DeNatale My blog on Ruby http://talklikeaduck.denhaven2.com/