Selenium WebDriver Java - 无法单击“自动完成”

时间:2017-06-17 17:15:42

标签: selenium selenium-webdriver autocomplete automated-tests selenium-firefoxdriver

将密钥发送到字段后,我无法单击autoCompletion选项。 我能够列出它们,找出我想要选择的那个,但显然有些不对劲。这是规格,

我希望能够在“注册”中选择此网页的“位置”字段“https://supercareer.com/home/company”,我选择,发送密钥,点击建议的位置,但它不会选择选项。我在Java控制台上没有任何错误。

我用来选择自动完成功能的功能:

public static void autoCompleteOptionSelector(String autoCompleteSearchText,String selection){

        WebElement autoOptions= driver.findElement(By.xpath("/html/body/div[3]/div[2]/div[3]/form/div[2]/div[2]/div[3]/span[1]/input"));
        autoOptions.sendKeys(autoCompleteSearchText);


        List<WebElement> optionsToSelect = driver.findElements(By.xpath("//div[@class='tt-suggestion tt-selectable']"));
        System.out.println("Size of the AutoSuggets is = " + optionsToSelect.size());

    //I print options till match with exact option I want. and then Click
        for(WebElement option : optionsToSelect){
            System.out.println(option);
            System.out.println("Values are = " + option.getText());
            if(option.getText().equals(selection)) {
                System.out.println("Trying to select: "+ selection);
                option.click();
                break;
            }
        }
    }

这是我的主要功能,CaseFunctions是上述功能的类:

WebDriver dr = new FirefoxDriver();
    CaseFunctions.autoCompleteOptionSelector("18661","White Haven, PA 18661, United States");

这是我的输出没有错误,但在网页上我无法选择。

控制台输出:

AutoSuggets的大小= 5

[[FirefoxDriver:WINDOWS上的firefox(b676fd34-8272-47c7-b0bc-14aace352dd6)] - &gt; xpath:// div [@ class ='tt-suggestion tt-selectable']]

值为= White Haven,PA 18661,United States

尝试选择:White Haven,PA 18661,United States

对我来说一切都很好。

3 个答案:

答案 0 :(得分:0)

我猜,除了if里面的条件外,一切都是正确的。我们需要使用contains而不是equals。下面的代码可能会给你一些想法。

    if(option.getText().contains(selection)) 
    {
        System.out.println("Trying to select: "+ selection);
        option.click();
        break;
    }

完整代码:

public static void main(String[] args) 
{
    System.setProperty("webdriver.chrome.driver", "/home/santhoshkumar/Softwares/Selenium/drivers/chromedriver2.29");
    WebDriver driver = new ChromeDriver();
    driver.get("https://supercareer.com/home/company");
    driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
    driver.findElement(By.xpath("//*[@id=\"AnonymousHeader1\"]/div/div[2]/div/div/a[1]")).click();
    WebElement autoOptions= driver.findElement(By.xpath("/html/body/div[3]/div[2]/div[3]/form/div[2]/div[2]/div[3]/span[1]/input"));
    autoOptions.sendKeys("18661");


    List<WebElement> optionsToSelect = driver.findElements(By.xpath("//div[@class='tt-suggestion tt-selectable']"));
    System.out.println("Size of the AutoSuggets is = " + optionsToSelect.size());

    //I print options till match with exact option I want. and then Click
    for(WebElement option : optionsToSelect)
    {
        System.out.println(option);
        System.out.println("Values are = " + option.getText());
        if(option.getText().contains("White Haven, PA 18661, United States")) 
        {
            System.out.println("Trying to select: "+ "White Haven, PA 18661, United States");
            option.click();
            break;
        }
    }

}

希望这会对你有所帮助。感谢。

答案 1 :(得分:0)

您可以尝试使用JavaScript执行程序单击该选项吗?请用以下代码替换代码option.click()。

JavaScriptExecutor js = (JavaScriptExecutor) driver;
js.executeScript ("arguments [0].click ()", option);

答案 2 :(得分:0)

尝试了许多事情并尝试了一些关于“Santhosh Kumar”的友好建议(无论如何都要感谢)。

这个东西解决了firefox的问题,但我仍然想知道为什么?因为对于任何其他情况,在此位置自动填充字段之前,Firefox驱动程序中从未出现过此类问题。

DesiredCapabilities capability = DesiredCapabilities.firefox();