0

当我运行 IE 驱动程序时,它一直在下拉框中选择错误的项目。看起来它只发生在下拉框中最后一个项目上。

例如,我想在下拉框中选择第 9 项,但是当我运行下面的代码时,它选择了第 8 项。这只发生在 IE 驱动程序中。

运行它时,它选择了错误的项目。

Dropdownbox.get(9).click();

当我运行它时,它会选择正确的项目

Dropdownbox.get(2).click();

我的环境:Selenium 3.0.0 和 IE webdriver 3.0.0.0 并且我也在使用 POM(页面对象模型)

@FindBy(how = How.CLASS_NAME,using = "select2-result-label")
private List<WebElement> Dropdownbox;
4

1 回答 1

0

经过进一步调查。我必须确定 3 个元素:下拉框、下拉框中的 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));
}
于 2016-11-21T14:26:02.067 回答