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();
}
如果这回答了您的问题,请告诉我。
我有一个 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();
}
如果这回答了您的问题,请告诉我。