使用Selenium webdriver测试自动完成

时间:2012-02-08 21:52:04

标签: selenium autocomplete webdriver

我有一个文本框,当我输入一个字母说's'时,会显示一个结果列表(如谷歌搜索)。

我正在使用最新的selenium webdriver和java。

我试过了

sendKeys("s"),

JavascriptLibrary jsLib = new JavascriptLibrary();

jsLib.callEmbeddedSelenium(driver, "doFireEvent", driver.findElement(By.id("assetTitle")), "onkeyup");

    jsLib.callEmbeddedSelenium(driver, "doFireEvent", driver.findElement(By.id("assetTitle")), "onblur");

    jsLib.callEmbeddedSelenium(driver, "doFireEvent", driver.findElement(By.id("assetTitle")), "onclick");

    jsLib.callEmbeddedSelenium(driver, "doFireEvent", driver.findElement(By.id("assetTitle")), "onmouseup");


driver.findElement(By.id("assetTitle")).sendKeys(Keys.ENTER);

即使在每个步骤之后添加等待,这些都不起作用。

有什么建议吗?

感谢。

更新: -

WebDriver driver = new FirefoxDriver();
    driver.get("http://www.google.com");
    WebElement query = driver.findElement(By.name("q"));
    query.sendKeys("s");
driver.findElement(By.xpath("//table[@class='gssb_m']/tbody/tr/td/div/table/tbody/tr/td/span")).click();
    driver.findElement(By.name("btnG")).click();

更新2: -

WebDriver driver = new FirefoxDriver();
    driver.get("http://www.kayak.com/");
    WebElement query = driver.findElement(By.name("destination"));
    query.sendKeys("s");

更新3: -        我尝试使用Selenium 1,并且通过将参数传递为'keydown'来实现fireevent方法。这应该是暂时的解决方法。

WebDriver driver = new FirefoxDriver();
    driver.get("http://www.kayak.com/");
    DefaultSelenium sel = new WebDriverBackedSelenium(driver,"http://www.kayak.com/");

    sel.type("//input[@id='destination']", "s");
    sel.fireEvent("//input[@id='destination']", "keydown");

3 个答案:

答案 0 :(得分:3)

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

  1. Selenium将'Mandaluyong'输入到自动建议的位置字段
  2. 自动建议字段与匹配选项
  3. 一起显示
  4. 然后selenium打开自动建议下拉菜单而不选择匹配选项。
  5. 我做的是:

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

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

    1. 从自动建议下拉列表中选择匹配的选项
    2. 关闭自动建议下拉列表
    3. 希望这有帮助。

答案 1 :(得分:1)

我相信你在这里测试自动建议(不是自动完成)

我遵循的步骤 -

  1. 在输入字段中输入内容
  2. 点击您要选择的建议。 (你可以使用Firebug和Firepath,Chrome等工具找到xpath)。
  3. 验证输入字段中的文本是否与预期相同。

答案 2 :(得分:0)

这应该是暂时的解决方法。

WebDriver driver = new FirefoxDriver();
    driver.get("http://www.kayak.com/");
    DefaultSelenium sel = new WebDriverBackedSelenium(driver,"http://www.kayak.com/");

    sel.type("//input[@id='destination']", "s");
    sel.fireEvent("//input[@id='destination']", "keydown");