invoke base class nested method

A

aidy

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
 
A

ara.t.howard

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

many ways. make it easy on yourself though

class ObjectMap
def self.login() Login end
end

class A_Test < ObjectMap

@@ie.goto('www.updatelog.com')
@@ie.maximize
#how do I run the username method?

login.username

end


-a
 
A

aidy

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
 
A

ara.t.howard

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

if you're a fan of debugging code with lots of global variables - sure.
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.

it's a class method.

-a
 
A

aidy

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
 
R

Rick DeNatale

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.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,770
Messages
2,569,584
Members
45,077
Latest member
SangMoor21

Latest Threads

Top