我有一个 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();
}
让我知道这是否回答了您的问题。