为什么显式等待不适用于自动提示框?

时间:2013-08-26 04:46:28

标签: selenium wait autosuggest

我尝试将ExplicitWait用于自动提示框,但它不起作用,所以我使用简单的Thread.sleep(5000)

/***************************************************************************************/ 
                                // The below Thread.sleep(5000) works fine 
                        //                    Thread.sleep(5000); 

        // However the below Explicit Wait block does not recognize the element
                        WebDriverWait wait5000 = new WebDriverWait(driver, 0);
                        wait5000.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@class='auto_suggest']/*[@class='title_item']")));
    /***************************************************************************************/    


                        WebElement firstItem = driver.findElement(By.xpath("//*[@class='auto_suggest']/*[@class='title_item']"));
                        firstItem.click();
                          System.out.println("Done!");

                }

            }

我可以使用Thread.sleep(5000)但由于时间损失,效率不高。有没有办法引入一个明确的等待autosuggest框?如何以更有效的方式更多地点击自动提示框?

1 个答案:

答案 0 :(得分:2)

构造函数中的第二个参数是以毫秒为单位的超时。

此处WebDriverWait wait5000 = new WebDriverWait(driver, 0);传入0 - 您最多会花费0毫秒来查找该元素。您可以尝试增加超时,例如,让它搜索最多5秒的元素:

WebDriverWait wait5000 = new WebDriverWait(driver, 5000);