在我的应用程序中,我有两个<select>
标签。第一个更改第二个选项中的选项,并在onchange事件中启用它。Selenium2的选择对象不会在IE8中触发onchange事件
当我使用Selenium2提供的Select对象时,它不会在IE8中运行时触发该事件(在FF中工作良好,而且手动执行时)。
Select select = new Select(getElementByName(name));
element.selectByValue(value);
第一个<select>
按预期变化。但是,第二个<select>
保持空白并被禁用。我试过这个作为解决方法:
if(ie) {
WebElement select = getElementByName(name);
WebElement option = select.findElement(By.cssSelector("[value='"+value+"']"));
List<WebElement> options = select.findElements(By.cssSelector("option"));
//select the first element
options.get(0).click();
//make sure the select is focused
select.click(); //open
select.click(); //close
Keyboard keyboard = getWebDriver().getKeyboard();
for(int i = 0; i < options.size() && option.getAttribute("selected") == null; i++) {
keyboard.pressKey(Keys.DOWN);
//note: if i do a Thread.sleep(100); here, it works more consistently, but still not 100%
}
} else {
// Do the above snippet
}
但现在我得到不一致的结果。所需的<option>
总是被选中,而有时只有事件被触发。
很明显,最好的选择是让选择在IE8中工作。有其他人看过这个问题吗?看起来像Selenium2中的一个错误。有没有已知的解决方法?
我都没有这个确切的问题,但我有问题,其中硒工作的最时间,但有时由于该元素尚未出现在页面上而大部分时间都会失败。我写了一个方法,等待元素加载,然后再试一次。如果再次失败,我会自动重新测试失败。不是最佳的,但它的工作原理。 –