简体   繁体   English

使用 Selenium webdriver 测试自动完成

[英]Test autocomplete with Selenium webdriver

I have a text box in which when I type one letter say 's' , it displays a list of results ( like google search) .我有一个文本框,当我在其中输入一个字母 say 's' 时,它会显示一个结果列表(如谷歌搜索)。

I am using latest selenium webdriver with java.我正在使用最新的 selenium webdriver 和 java。

I have tried我努力了

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

None of these work even after adding wait after each of the steps.即使在每个步骤之后添加等待后,这些都不起作用。

Any suggestions?有什么建议么?

Thanks.谢谢。

Update :-更新 :-

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

Update 2 : -更新 2 :-

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

Update 3 :- I tried with Selenium 1 and the fireevent method works by passing parameter as 'keydown'.更新 3:- 我尝试使用 Selenium 1,fireevent 方法通过将参数作为“keydown”传递来工作。 This should be a temporary workaround for now.这应该是暂时的解决方法。

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

I found a workaround about this.我找到了一个解决方法。 My problem was:我的问题是:

  1. Selenium inputted 'Mandaluyong' to an auto-suggest location field Selenium 将“Mandaluyong”输入到自动建议位置字段
  2. The auto-suggest field appears together with the matched option自动建议字段与匹配的选项一起出现
  3. Then selenium left the auto-suggest drop-down open not selecting the matched option.然后 selenium 将自动建议下拉菜单保持打开状态,而不选择匹配的选项。

What I did was:我所做的是:

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

This is because on a manual test, when I try to press TAB key, two things were done by the system:这是因为在手动测试中,当我尝试按 TAB 键时,系统做了两件事:

  1. Picks the matched option from the auto-suggest drop-down从自动建议下拉菜单中选择匹配的选项
  2. Closes the auto-suggest drop-down关闭自动建议下拉菜单

I believe you are testing auto-suggest here (not auto-complete)我相信你在这里测试自动建议(不是自动完成)

Steps I follow -我遵循的步骤 -

  1. Enter something in the input field在输入字段中输入一些东西
  2. Click on the suggestion you want to choose.单击您要选择的建议。 (You can find the xpath using some tools like Firebug with Firepath, Chrome, etc.) (您可以使用 Firebug 和 Firepath、Chrome 等工具找到 xpath。)
  3. Verify the text in the input field is same as expected.验证输入字段中的文本是否与预期相同。

This should be a temporary workaround for now.这应该是暂时的解决方法。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM