java - Enable and select values of Drop-down based on the value selected in another Drop-down -


i have couple of drop-downs on page; after selecting value on first drop-down, second drop-down enable , values loaded accordingly.

when running manually, after selecting value in first drop-down, page gets loaded , second drop-down gets enabled , values listed according value selected in first drop-down.

however, when automation using selenium webdriver (in java), value of first drop-down gets selected , second drop-down never enabled or loaded values.

even tried webdriverwait below, still no luck.

webdriverwait wait = new webdriverwait(wd, 50); wait.until(expectedconditions.elementtobeclickable(by.id("event"))); 

noticed move out page (alt+tab)and come again page page getting loaded , second drop-down enabled.

below exception thrown,

org.openqa.selenium.timeoutexception: timed out after 50 seconds waiting element clickable: by.id: event 

please advise.

coding page object model:

in pom class:

//create object page 1 createasset asset = pagefactory.initelements(wd,createasset.class);   //read values of first & second drop-down excel  string list_event_type = readsheet.getrow(1).getcell(2).getstringcellvalue(); string list_event = readsheet.getrow(1).getcell(3).getstringcellvalue();  //calling drop-down methods in page factory pom class  asset.selecteventtype(list_event_type);  webdriverwait wait = new webdriverwait(wd, 50); webelement element = wait.until(expectedconditions.elementtobeclickable(by.id("event"))); asset.selectevent(list_event); 

in page factory class:

//select given value on first drop-down  @findby(how = how.id, using = "eventtype") public webelement   eventtype;  public void selecteventtype(string eventtype) {     this.eventtype.sendkeys(eventtype); }  //select given value on sescond drop-down  @findby(how = how.id, using = "event") public webelement   event;  public void selectevent(string event) {     this.event.sendkeys(event); } 

you using same page object select both values, problem page object initializes 1 (at start. means event property never gets initialized values when eventtype element changed.

two options:
1. re-init page object after selecting eventtype

//calling drop-down methods in page factory pom class  asset.selecteventtype(list_event_type); asset = pagefactory.initelements(wd,createasset.class); 
  1. change selecteventtype return new page object, same thing above

    public createasset selecteventtype(string eventtype)
    {
    this.eventtype.sendkeys(eventtype);
    return new createasset(_driver);
    }

then call in pom with

asset = asset.selecteventtype(list_event_type); 

Comments

Popular posts from this blog

How has firefox/gecko HTML+CSS rendering changed in version 38? -

javascript - Complex json ng-repeat -

jquery - Cloning of rows and columns from the old table into the new with colSpan and rowSpan -