Die Ausführungszeit ist proportional zur Anzahl der ausgeführten Befehle. Um es zu reduzieren, könnten Sie alle Elemente mit einem einzigen Aufruf auswählen. Sie sollten auch einen CSS-Selektor verwenden, anstatt einen XPath, wenn es möglich ist:
List<WebElement> elements = driver.findElements(By.cssSelector(
"#TDCON > tbody > tr > td:nth-child(4) > span > span:nth-child(2) > span > span > input"));
for (int i = 0; i < numberOfValues; i++) {
try {
elements[i].sendKeys(Keys.chord(Keys.CONTROL, "a"), value);
}catch (NoSuchElementException ex) {
break;
}
}
Eine andere Möglichkeit, ein Stück Javascript injizieren würde und direcly die .value
Eigenschaft zuweisen:
((JavascriptExecutor)driver).executeScript(
"var cells = arguments[0].querySelectorAll('#TDCON > tbody > tr > td:nth-child(4)'); " +
"var values = arguments[1]; " +
"for(var i = 0; i < values.length; ++i) { " +
" cells[i].querySelector('span > span:nth-child(2) > span > span > input').value = values[i]; " +
"} "
, findElement, values);
aber es könnte nicht funktionieren, wenn die Typisierung dynamisch von der Seite gehandhabt wird.
CssSelector ist möglicherweise schneller. Können Sie HTML und URL Ihrer Anwendung anzeigen? – Buaban
Leider kann ich keine anderen Informationen über die Anwendung teilen. – user3904604