5

以下代码测试网页的自动完成框:

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();

    }

}

为什么自动建议框不加载?重要提示:尝试手动输入“...........” ......自动完成框将完美加载!!!那么,为什么不起作用cssSelector,为什么不加载自动完成框?

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

PS:我也试过了fireEventsendKeys但没有任何效果。

4

5 回答 5

1

我找到了一个解决方法。我的问题是:

  1. Selenium 在自动建议位置字段中输入了“Mandaluyong”
  2. 自动建议字段与匹配的选项一起出现
  3. 然后 selenium 将自动建议下拉菜单打开,不选择匹配的选项。

我所做的是:

        driver.findElement(By.name("fromLocation")).sendKeys("Mandaluyong");
        driver.findElement(By.name("fromLocation")).sendKeys(Keys.TAB);

这是因为在手动测试中,当我尝试按 TAB 键时,系统做了两件事:

  1. 从自动建议下拉菜单中选择匹配的选项
  2. 关闭自动建议下拉菜单

希望这可以帮助。

于 2014-04-08T06:52:50.293 回答
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();
}
于 2013-07-19T09:32:08.000 回答
0

// 允许自动填充值填充文本框。

// 等待 6 秒,确保插入自动值 thread.sleep(6000L);

// 清除自动填充值 driver.findElement(By.name("txtBox")).clear();

driver.findElement(By.name("txtBox")).sendKeys("value");

于 2014-10-30T10:47:14.610 回答
0

您可以使用 tab 或 enter 来退出场景,或者,如果它是必填字段,则 selenium 是不可能的。(伤心)

于 2020-08-30T09:14:05.870 回答
0

尝试首先单击输入文本框。这将触发自动填充下拉框,然后使用 sendKeys 输入所需的值

于 2017-04-12T14:43:42.693 回答