当我运行IE驱动程序时,它会继续在下拉框中选择错误的项目。它看起来只发生在下拉框中的最后一项。
例如我想在下拉框中选择第9项,但是当我运行下面的代码时,它会选择第8项。这只适用于IE驱动程序。
运行时,它选择了错误的项目。
Dropdownbox.get(9).click();
当我运行它时,它会选择正确的项目
Dropdownbox.get(2).click();
我的环境:Selenium 3.0.0和IE webdriver 3.0.0.0 AND 我也在使用POM(页面对象模型)
@FindBy(how = How.CLASS_NAME,using = "select2-result-label")
private List<WebElement> Dropdownbox;
答案 0 :(得分:0)
经过进一步调查。 我必须确定3个元素:dropdownbox,下拉框中的allOptions和下拉框中的inputTextbox。
我创建了这个方法来解决问题
public static void selectItemInDropdownBox(WebElement dropdownbox,WebElement inputSearch,List<WebElement> allOptionsList,String selectedItem){
//Wait for dropdownbox to display on page
browser.ExplicitWait(dropdownbox);
//Now Click on dropdownbox to show the inputTextbox and allOptions
dropdownbox.click();
// Must now wait for allOptions to display
browser.ExplicitWait(inputSearch);
// Type now the searched Item
inputSearch.sendKeys(selectedItem);
//Now if the search item has more than 1 returned item then we need to select the correct one
int counter = 0;
for ( WebElement i: allOptionsList) {
if ( i.getText().trim().equals( selectedItem ) ) {
allOptionsList.get(counter).click();
break;
}
counter++;
}
}
这是我的显式等待:第一个用于WebElement,第二个用于列表
public static void ExplicitWait( WebElement WebElement){
(new WebDriverWait(driver,10)).until(ExpectedConditions.elementToBeClickable(WebElement));}
public static void ExplicitWaitList(List<WebElement> listWebElement){
(new WebDriverWait(driver,10)).until(ExpectedConditions.visibilityOfAllElements(listWebElement));
}