如何使用Selenium填写自动完成输入框?(为什么自动输入不加载自动完成选项但是手动输入呢?)

Bur*_*ras 5 java selenium autocomplete inputbox

以下代码测试网页的自动裁剪框:

public class Test {

    public static void main(String[] args) throws InterruptedException {
        System.setProperty("webdriver.chrome.driver","chromedriver\\chromedriver.exe");     
        WebDriver driver = new ChromeDriver();
        driver.get("http://www..............com"); 
        driver.switchTo().frame("mainFrame");

        WebDriverWait waitst = new WebDriverWait(driver, 120);
        waitst.until(ExpectedConditions.visibilityOfElementLocated(By.name("sourceTitle")));

        WebElement sourceTitle = driver.findElement(By.name("sourceTitle"));
        WebElement small = driver.findElement(By.cssSelector("li#nameExampleSection label + small"));
        sourceTitle.sendKeys("Times"); 
        Thread.sleep(5000);
        Actions actions = new Actions(driver);
        actions.click(small).perform();

    }

}
Run Code Online (Sandbox Code Playgroud)

为什么自动提示框没有加载?重要提示:尝试手动输入"..........." ...自动完成框将加载完全正常!那么,为什么不起作用cssSelector,为什么不加载自动完成框?

为什么自动输入不允许自动完成选项但是手动输入呢???

PS:我也试过fireEvent,sendKeys但没有任何作用.

joo*_*ten 1

我尝试了你的代码,它的作用与手动演练的作用完全一样。“美联社”仅返回“不匹配,请尝试来源”。然后,在您的代码中,您尝试单击下一个表单列表项,而不是结果弹出窗口。自动建议弹出窗口动态填充在输入表单下方的 html 页面顶部。以下代码确实选择下拉列表中的第一个选项。

@Test
public void test() throws InterruptedException {
        WebDriver driver = new ChromeDriver();
        driver.get("http://www.lexisnexis.com/hottopics/lnacademic/?verb=sf&sfi=AC00NBGenSrch"); 
        driver.switchTo().frame("mainFrame");

        WebDriverWait waitst = new WebDriverWait(driver, 0);
        waitst.until(ExpectedConditions.visibilityOfElementLocated(By.name("sourceTitle")));

        WebElement sourceTitle = driver.findElement(By.name("sourceTitle"));
        sourceTitle.sendKeys("Times"); 
        Thread.sleep(5000);
        WebElement firstItem = driver.findElement(By.xpath("//*[@class='auto_suggest']/*[@class='title_item']"));
        firstItem.click();
}
Run Code Online (Sandbox Code Playgroud)