使用Selenium WebDriver测试自动完成功能

8

我有一个文本框,当我输入一个字母例如's'时,它会显示一系列结果(类似于Google搜索)。

我正在使用最新的Java Selenium WebDriver。

我尝试过

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

你能否更新你的问题,并提供一个与Google搜索框兼容的示例代码? - djangofan
我已经添加了示例Google搜索代码。虽然最后一步不是必需的,因为Google会自动带来搜索结果。但是,如果您尝试kayak.com,则类似的代码将无法用于搜索机场。 - Yash
添加了Kayak示例。通过发送键“s”,我们应该看到以字母S开头的机场。 - Yash
3个回答

3

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

  1. Selenium向自动建议的位置字段中输入“Mandaluyong”
  2. 匹配的选项与自动建议字段一起出现
  3. 然后Selenium将自动建议下拉列表保持打开状态,而不选择匹配的选项。

我的解决方法如下:

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

这是因为在手动测试中,当我尝试按下TAB键时,系统会执行两个操作:

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

1

我相信你正在测试自动建议功能(而不是自动完成)

我遵循的步骤:

  1. 在输入框中输入内容
  2. 点击您想要选择的建议(您可以使用一些工具如Firebug with Firepath,Chrome等来查找xpath)
  3. 验证输入框中的文本与预期相同。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接