Java Selenium循环遍历网站sendKeys将字符串组合在一起

时间:2017-07-07 22:54:25

标签: java selenium selenium-chromedriver sendkeys

我有一个for循环,不断循环回网站填写并提交一个搜索框,其中包含列表中的下一个字符串。

例如,如果列表包含[abcd,efgh,ijkl ....],第一个循环将发送abcd,第二个循环将发送efgh等。

目前循环正确发送第一个字符串,但是在之后的每个循环中,发送的字符串被添加到前一个字符串。因此,不是第二次循环,而是abcdefgh。

如何清除按键以便我可以发送单个字符串?这就是我现在所拥有的:

    for(String value : List){
        driver.get(Link);
        Actions actions = new Actions(driver);
        WebElement input_field = driver.findElement(By.id("txtBoxSearch"));

        actions.moveToElement(input_field);
        actions.click();            
        actions.sendKeys(value);            
        actions.build().perform();

        WebElement submit_key = driver.findElement(By.xpath("//button[contains(@title, 'Search')]"));
        actions.moveToElement(submit_key);

        actions.click();
        actions.build().perform(); 
    }

2 个答案:

答案 0 :(得分:0)

您需要在写入值之前清除文本框的内容

for(String value : List){
    driver.get(Link);
    Actions actions = new Actions(driver);
    WebElement input_field = driver.findElement(By.id("txtBoxSearch"));
    input_field.clear();
    actions.moveToElement(input_field);
    actions.click();            
    actions.sendKeys(value);            
    actions.build().perform();
    WebElement submit_key = driver.findElement(By.xpath("//button[contains(@title, 'Search')]"));
    actions.moveToElement(submit_key);
    actions.click();
    actions.build().perform(); 
}

答案 1 :(得分:0)

以下是您的问题的答案:

通过操作类实例在所需元素上调用click()方法后,接下来使用操作类实例clickAndHold,发送CONTROL A然后发送新文本{{ 1}}到表单控件覆盖以前的文本如下:

DebanjanB

如果这回答你的问题,请告诉我。