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

Java Selenium looping through website sendKeys combine strings together

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

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

目前循环正确发送第一个字符串,但在之后的每个循环中,发送的字符串都会添加到前一个字符串中。所以在第二个循环中不是 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(); 
    }

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

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

这是您问题的答案:

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

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.clickAndHold(input_field).sendKeys(Keys.chord(Keys.CONTROL, "a"), "DebanjanB").build().perform();            
    WebElement submit_key = driver.findElement(By.xpath("//button[contains(@title, 'Search')]"));
    actions.moveToElement(submit_key);
    actions.click();
    actions.build().perform(); 
}

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