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



我有一个 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(); 
}

以下是您问题的答案:

通过操作类实例对所需元素调用click()方法后,接下来使用操作类实例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(); 
}

让我知道这是否回答了您的问题。

最新更新