[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

invoke base class nested method

aidy

4/3/2007 7:37:00 PM

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?

Thanks

aidy

5 Answers

Ara.T.Howard

4/3/2007 8:01:00 PM

0

aidy

4/3/2007 8:43:00 PM

0

Hi,

Could I do something like this?

$ie = Watir::IE.new
$ie.goto('www.updatelog.com')
class ObjectMap
def self.login()
username = $ie.text_field(:name, 'user_name')
end
end


class A_Test < ObjectMap

login.username.set('aidy')
end

I am not so sure why you have used a self prefix before the login
method.

Thanks

Aidy

Ara.T.Howard

4/3/2007 8:50:00 PM

0

aidy

4/3/2007 9:20:00 PM

0

Thanks for your advice.

What I mean to ask is that once I have entered the class method
(self.login()) can I
then assign

username=ie.text_field(:name, 'user_name')


and invoke this assignment in the sub class

class A_Test < ObjectMap

login.username


end

?

Or something like that

cheers

aidy

Rick DeNatale

4/6/2007 1:14:00 PM

0

On 4/3/07, aidy <aidy.rutter@gmail.com> 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.denh...