【问题标题】:Test autocomplete with Selenium webdriver使用 Selenium webdriver 测试自动完成
【发布时间】:2012-03-01 09:41:59
【问题描述】:

我有一个文本框,当我在其中输入一个字母“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,fireevent 方法通过将参数传递为“keydown”来工作。这应该是暂时的解决方法。

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 搜索字段的示例代码更新您的问题?
  • 我已经添加了示例谷歌搜索代码。虽然最后一步不是必需的,因为谷歌会自动带来搜索结果。但是,如果您尝试使用 kayak.com,那么类似的代码将无法用于搜索机场。
  • 添加了皮划艇样品。通过发送 key 's',我们应该看到以字母 S 开头的机场。

标签: java selenium autocomplete webdriver


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    我遵循的步骤 -

    1. 在输入字段中输入内容
    2. 单击您要选择的建议。 (您可以使用 Firebug 和 Firepath、Chrome 等工具找到 xpath。)
    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. 关闭自动建议下拉菜单

      【讨论】:

        猜你喜欢
        • 2015-10-30
        • 1970-01-01
        • 2017-01-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-07
        • 2016-04-17
        相关资源
        最近更新 更多