Utilizzo Java, Selenium e Chrome per l'automazione dei test. I nostri sviluppatori hanno recentemente aggiornato la nostra interfaccia utente da AngularJS a Angular2 (non sono sicuro che sia importante). Ma da allora, sendKeys sta inserendo caratteri incompleti nel campo di testo. Ecco un esempio:I SendKeys selenio non inviano tutti i caratteri
public void enterCustomerDetails()
{
txtFirstName.sendKeys("Joh201605130947AM");
txtSurname.sendKeys("Doe201605130947AM");
txtEmail.sendKeys("[email protected]");
}
Ho anche provato a utilizzare executeScript. Non ha funzionato. Può inserire caratteri completi ma il modulo pensa che il campo sia nullo.
public void forceSendKeys(WebElement element, String text)
{
if (element != null)
((JavascriptExecutor) this.webDriver).executeScript("arguments[0].value=arguments[1]", element, text);
}
public void enterCustomerDetails()
{
forceSendKeys(txtFirstName, "Joh201605130947AM");
forceSendKeys(txtSurname, "Doe201605130947AM");
forceSendKeys(txtEmail, "[email protected]");
}
Ho anche provato a utilizzare .click() prima di .sendKeys e aggiungo in sleep time. Non hanno funzionato anche loro.
mi è venuta un'idea per immettere i caratteri 1 da 1 da questo post: How to enter characters one by one in to a text field in selenium webdriver?
Ha funzionato, ma che significa che devo riscrivere tutti i miei codici di SendKeys per la nuova funzione:
public void sendChar(WebElement element, String value)
{
element.clear();
for (int i = 0; i < value.length(); i++){
char c = value.charAt(i);
String s = new StringBuilder().append(c).toString();
element.sendKeys(s);
}
}
public void enterCustomerDetails()
{
sendChar(txtFirstName, "Joh201605130947AM");
sendChar(txtSurname, "Doe201605130947AM");
sendChar(txtEmail, "[email protected]");
}
Se voi ragazzi conoscete un modo migliore, per favore aiutatemi! :)
buona. sembra un problema solo con Angular2. –