2017-02-01 5 views
0

Хотя тест ясен и прост, я всегда сталкиваюсь с одной и той же проблемой, когда вы передаете ключи (имя пользователя, пароль), поле пароля написанный вместо имени пользователя!Несмотря на автоматизацию процесса входа в систему с appium, пароль и имя пользователя присоединяются к тому же полю имени пользователя

Вот мой тест NG я использую appium для моих тестов

@Test 
    public void Test1() throws InterruptedException { 
     System.out.println("newlook-tutoriel"); 
     driver.findElement(By.id("skip")).click(); 
     System.out.println("newlook-welcome"); 
     driver.findElement(By.id("btn_signin_welcome")).click(); 
     System.out.println("newlook-Me connecter"); 
     driver.findElement(By.id("input_email")).sendKeys("[email protected]"); 
     driver.findElement(By.id("input_password")).sendKeys("00000000"); 
     System.out.println("connected !!!!"); 
    } 

я получил имя = [email protected]

+0

Интересно. Еще раз проверьте идентификаторы полей как в приложении, так и в коде, а также проверьте, что они уникальны на странице. – lauda

+0

да, я проверяю, что это нормально – Emna

+0

Какой драйвер вы используете, это firefox? – acikojevic

ответ

0

Наконец я решил эту проблему, добавив к моему коду:

driver.hideKeyboard(); 

Этого вопрос потому что клавиатура скрывает поле пароля!

+0

driver.hideKeyboard(); метод выдает исключение, если клавиатура отсутствует. Лучше вы обрабатываете его с помощью блока catch catch. – Vinod

+1

Затем вместо того, чтобы скрывать клавиатуру, вы должны прокрутить вниз до фактического поля.Это будет отражать ожидаемые действия пользователя, что является точкой такого типа тестов. –

+0

Хорошая идея, но прокрутка заблокирована, потому что имя приложения должно быть видимым! – Emna

0

Это может быть проблема синхронизации, только для попробуйте поставить Thread.sleep(5000); после того, как вы установили имя пользователя и перед тем, как попытаться установить пароль и посмотреть, что произойдет.

Странно, но это случилось в моем случае, иногда мой firefoxdriver писал в неправильном поле, даже если все поля были уникальными и успешно найдены. Небольшой промежуток времени между двумя вызовами sendKeys() решил проблему. Я не использовал сон, простое верификацию, если правильный текст был написан в поле между этими двумя вызовами, было достаточно времени, так что следующий sendKeys() пишет в правильном поле.

+0

Невероятно, если время было проблемой, оно должно иметь и ошибка, чтобы этот элемент не был найден или не виден. Было бы очень странно заполнять поле с другим идентификатором из-за времени. – lauda

+0

Я должен учитывать, что клавиатура скрывает поле пароля! – Emna

+3

Странно, но это случилось в моем случае, иногда мой firefoxdriver писал в неправильном поле, даже если все поля были уникальными. Небольшой промежуток времени между 2 вызовами sendKeys() решил проблему. Я не использовал сон, простое верификацию, если правильный текст был написан в поле между этими двумя вызовами, было достаточно времени, чтобы следующая команда sendKeys() записывалась в правильное поле. Странно, что я согласен. : D @Emna, эта временная помощь thread.sleep() в вашем случае? – acikojevic

2

Это странный вопрос. Но вот решение для этого.

public void hideKeyBoard() 
{ 
    try{driver.hideKeyboard();} 
    catch(Exception e){} 
} 

Использование выше метода, чтобы скрыть клавиатуру

driver.findElement(By.id("input_email")).click(); 

    driver.getKeyboard().sendKeys("[email protected]"); 

    hideKeyboard(); 

    driver.findElement(By.id("input_password")).click(); 

    hideKeyboard(); 

    driver.getKeyboard().sendKeys("00000000"); 

Надеется, что это помогает :)

+0

Я уже пробовал, но никак не из-за клавиатуры! – Emna

+0

@Emna Отредактировал ответ. Еще раз проверьте – Vinod

+0

Я уже положил свой ответ на клавиатуру перед вами, и он работает нормально: D – Emna