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:
>
>
> <snip>
> 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
> <snip>
>
> 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/