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);
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
Post a Comment