Thanks Stephen, that worked. Appreciate your help.

- Nandish

Sent from my iPhone

> On Feb 27, 2017, at 6:55 PM, Stephan Classen <[email protected]> wrote:
> 
> I guess you could do i the following way:
> 
> 1. make the static injector field on SeleniumSuite public (or package private 
> if all classes reside in the same package)
> 
> 2. change the following implementation
> 
> public abstract class ProjTest extends SeleniumTest {
>        @Override
>        public Page getCurrentPage() {
>           return SeleniumSuite.injector.get(Page.class)
>       }
> }
> 
> 
> But I am not sure as I couldn't find the implementations of SeleniumSuite and 
> SeleniumTest on the Internet. If theses are not classes from the selenium 
> library then you should have provided them in your code snippets for 
> completeness...
> 
> 
>> On 28.02.2017 00:38, Nandish Chikkabasavaraju wrote:
>> No Selenium test is not using injector.
>> 
>> I am in assumption when suite @beforeClass method is executed to bind, it 
>> will have Page bound to ProjPage.
>> 
>> How do I need to use the injector in this case?
>> 
>> Between I am new to Guice.
>> 
>> 
>> 
>> On Feb 27, 2017, at 5:17 PM, Stephan Classen <[email protected]> wrote:
>> 
>>> I see in you code how you construct the injector. But I never see you 
>>> making use of it.
>>> I am not familiar with the Selenium library. Does it make use of the 
>>> injector in the SeleniumTest.getCurrentPage() method?
>>> I rather doubt that Selenium will use you injector. So where do you use the 
>>> injector?
>>> 
>>>> On 27.02.2017 21:46, Nandish MC wrote:
>>>> public abstract class Page extends SelPage
>>>> {
>>>>    public void logOut() {
>>>>         System.out.println("inside Product");
>>>>         WebDriverWait wait = new WebDriverWait(getDriver(), getWaitTime());
>>>>         WebElement element = 
>>>> wait.until(ExpectedConditions.elementToBeClickable(By.id("logout")));
>>>>         element.click();
>>>> 
>>>>         // this is typically not recommended, but logout is an oddball; 
>>>> because
>>>>         // we don't know where we're going after logout, we can't do a 
>>>> "wait"
>>>>         // for something on that page
>>>>         try {
>>>>             Thread.sleep(200);
>>>>         } catch (InterruptedException e) {
>>>>             // eat it
>>>>         }
>>>>     }
>>>> }
>>>> 
>>>> 
>>>> Class ProjPage extends Page{
>>>> 
>>>>  @Override
>>>>     public void logOut() {
>>>>         System.out.println("Inside Project");
>>>>         WebDriverWait wait = new WebDriverWait(getDriver(), getWaitTime());
>>>>         WebElement element = 
>>>> wait.until(ExpectedConditions.elementToBeClickable(By.id("logout")));
>>>>         element.click();
>>>> 
>>>>         // this is typically not recommended, but logout is an oddball; 
>>>> because
>>>>         // we don't know where we're going after logout, we can't do a 
>>>> "wait"
>>>>         // for something on that page
>>>>         try {
>>>>             Thread.sleep(200);
>>>>         } catch (InterruptedException e) {
>>>>             // eat it
>>>>         }
>>>>     }
>>>> }
>>>> 
>>>> @RunWith(Suite.class)
>>>> @Suite.SuiteClasses({ Login.class, 
>>>>     ProjectLogout.class, 
>>>> })
>>>> public class ProjSeleniumSuite  extends SeleniumSuite {
>>>>     
>>>>     private static Injector injector;
>>>>     /*
>>>>      * No code is needed in here. Add new tests to the suite by putting 
>>>> them in
>>>>      * the @Suite.SuiteClasses() declaration above.
>>>>      */
>>>> 
>>>>     @BeforeClass
>>>>     public static void setUp() throws Exception {
>>>>         System.out.println("setting up");
>>>>         injector = Guice.createInjector(new AbstractModule() {
>>>> 
>>>>             @Override
>>>>             protected void configure() {
>>>>                 System.out.println("configuriung");
>>>>                 bind(Page.class).to(ProjPage.class);
>>>>             }
>>>>         });
>>>>     }
>>>> 
>>>>     @AfterClass
>>>>     public static void tearDown() throws Exception {
>>>>         System.out.println("tearing down");
>>>>         injector = null;
>>>>     }
>>>> }
>>>> 
>>>> public class ProjLogout extends ProjTest {
>>>> 
>>>>         /**
>>>>          * Log out of the application.
>>>>          */
>>>>         @Test
>>>>         public void logout() {
>>>>             System.out.println("inside CBC logout............");
>>>>             getCurrentPage().logout();
>>>>         }
>>>>  }
>>>> 
>>>> Class DashboardPage extends Class Page{
>>>> {
>>>> //inherits Page logout method
>>>> methods 1
>>>> methods 2
>>>> methods 3
>>>>  }
>>>> 
>>>> public abstract class ProjTest extends SeleniumTest{
>>>>        public Page getCurrentPage() {
>>>>        try{
>>>>             Page dashBoardPage =(Page) super.getCurrentPage(); // This 
>>>> gets the Dashboard page instance
>>>>         }catch(Exception e){
>>>>             setCurrentPage(null);
>>>>         }
>>>>         return (Page) super.getCurrentPage();
>>>>       }
>>>> }
>>>> 
>>>> 
>>>> Above are the set of classes used, here I am trying to get ProjPage logout 
>>>> method to be executed instead of Page.logout() method.
>>>> 
>>>> This method is an inherited method for Dashboard Page.
>>>> 
>>>> currently, even after binding I see Page.logout() method is executed
>>>>  
>>>> 
>>>>> On Monday, February 27, 2017 at 1:01:58 AM UTC-5, scl wrote:
>>>>> So far this code looks correct. Can you also provide some of the test 
>>>>> methods. Maybe something is hiding there.
>>>>> 
>>>>> Am 27. Februar 2017 03:45:39 MEZ schrieb Nandish MC <[email protected]>:
>>>>>> 
>>>>>> I have multiple hierarchical class like below
>>>>>> 
>>>>>> public abstract class Page extends SelPage
>>>>>> {
>>>>>> public method 1{}
>>>>>> public method 2{}
>>>>>> public method 3{}
>>>>>> }
>>>>>> 
>>>> 
>>>>  
>>>>>> Class DashboardPage extens Class Page{
>>>>>> { }
>>>>>> 
>>>>>> Here I need to bind new Page class
>>>>>> Class ProjPage extends Page{
>>>>>> public method1{} /* change method implementation /
>>>>>> public method 2{} / change method implementation /
>>>>>> public method 3{} / change method implementation */
>>>>>> }
>>>>>> 
>>>>>> public class ProjSeleniumSuite extends SeleniumSuite {
>>>>>> 
>>>>>> private static Injector injector;
>>>>>> 
>>>>>> @BeforeClass
>>>>>> public static void setUp() throws Exception {
>>>>>>     injector = Guice.createInjector(new AbstractModule() {
>>>>>>         @Override
>>>>>>         protected void configure() {
>>>>>>             System.out.println("configuriung");
>>>>>>             bind(Page.class).to(ProjPage.class);
>>>>>>         }
>>>>>>     });
>>>>>> }
>>>>>> @AfterClass
>>>>>> public static void tearDown() throws Exception {
>>>>>>     injector = null;
>>>>>> }
>>>>>> }
>>>>>> 
>>>>>> The above code runs fine..but it is not binding the Page class method 
>>>>>> implementation with ProjPage class methods Can i achieve this using 
>>>>>> Guice binder like above?
>>>>>> 
>>>>>> The thing i need to achieve is, when i instantiate DashboardPage , i 
>>>>>> want ProjPage methods to be called instead of Page class methods.
>>>>>> 
>>>>>> Please help
>>>>>> 
>>>> -- You received this message because you are subscribed to the Google 
>>>> Groups "google-guice" group. To unsubscribe from this group and stop 
>>>> receiving emails from it, send an email to 
>>>> [email protected]. To post to this group, send 
>>>> email to [email protected]. Visit this group at 
>>>> https://groups.google.com/group/google-guice. To view this discussion on 
>>>> the web visit 
>>>> https://groups.google.com/d/msgid/google-guice/43253ec2-1e7e-401d-99dd-d429f2d14a0d%40googlegroups.com.
>>>>  For more options, visit https://groups.google.com/d/optout.
>>> -- You received this message because you are subscribed to a topic in the 
>>> Google Groups "google-guice" group. To unsubscribe from this topic, visit 
>>> https://groups.google.com/d/topic/google-guice/Kema1MvYHtg/unsubscribe. To 
>>> unsubscribe from this group and all its topics, send an email to 
>>> [email protected]. To post to this group, send 
>>> email to [email protected].  Visit this group at 
>>> https://groups.google.com/group/google-guice. To view this discussion on 
>>> the web visit 
>>> https://groups.google.com/d/msgid/google-guice/34fec307-4722-c48f-ff44-343de6609986%40gmx.ch.
>>>  For more options, visit https://groups.google.com/d/optout.
>> -- You received this message because you are subscribed to the Google Groups 
>> "google-guice" group.  To unsubscribe from this group and stop receiving 
>> emails from it, send an email to [email protected]. 
>> To post to this group, send email to [email protected]. Visit 
>> this group at https://groups.google.com/group/google-guice. To view this 
>> discussion on the web visit 
>> https://groups.google.com/d/msgid/google-guice/4613CA3C-987E-4252-A597-141D2AB0D827%40gmail.com.
>>  For more options, visit https://groups.google.com/d/optout.
> -- 
> You received this message because you are subscribed to a topic in the Google 
> Groups "google-guice" group.
> To unsubscribe from this topic, visit 
> https://groups.google.com/d/topic/google-guice/Kema1MvYHtg/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to 
> [email protected].
> To post to this group, send email to [email protected].
> Visit this group at https://groups.google.com/group/google-guice.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/google-guice/123018ac-eebc-31c1-d2bb-0b1672daa7ea%40gmx.ch.
> For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
"google-guice" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/google-guice.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/google-guice/1C7A1770-FBEE-4EA1-9676-3A0FD9E9D254%40gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to