【发布时间】:2015-06-25 21:26:39
【问题描述】:
我在一个页面上有几个下拉菜单;在第一个下拉菜单中选择一个值后,第二个下拉菜单将被启用并相应地加载值。
手动运行时,在 First Drop-down 中选择一个值后,页面会加载并启用 Second Drop-down,并根据 First Drop-down 中选择的值列出值。
但是,当使用 Selenium Webdriver(Java 中)进行自动化时,只有 First Drop-down 的值被选中,而 Second Drop-down 永远不会启用或加载这些值。
即使尝试使用 WebDriverWait 如下,但仍然没有运气。
WebDriverWait wait = new WebDriverWait(wd, 50);
wait.until(ExpectedConditions.elementToBeClickable(By.id("event")));
注意到只有我们移出页面 (ALT+TAB) 并再次进入该页面正在加载的页面并启用了第二个下拉菜单。
下面的异常也会抛出,
org.openqa.selenium.TimeoutException: Timed out after 50 seconds waiting for element to be clickable: By.id: event
请指教。
使用页面对象模型编码:
在 POM 类中:
//Create Object for Page 1
CreateAsset asset = PageFactory.initElements(wd,CreateAsset.class);
//Read the values of First & Second Drop-down from an 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);
在页面工厂类中:
//select the given value on the First Drop-down
@FindBy(how = How.ID, using = "eventType")
public WebElement eventType;
public void selectEventType(String eventType)
{
this.eventType.sendKeys(eventType);
}
//select the given value on Sescond Drop-down
@FindBy(how = How.ID, using = "event")
public WebElement event;
public void selectEvent(String event)
{
this.event.sendKeys(event);
}
【问题讨论】:
标签: java drop-down-menu selenium-webdriver