2016-12-20 6 views
-2

Я работаю с UITesting, поскольку мне нужно проверить поле электронной почты и пароль, используя сохраненное значение NSUserDefaults.Пожалуйста, дайте мне часть кода.UITesting для входа в xcode8

ПРИМЕЧАНИЕ. 1. Проверьте, что поля электронной почты и пароля являются действительными или недействительными или пустыми.

+0

У вас есть код подтверждения пароля и пароля? –

+0

Да, да, но проверка выполняется в uitesting. –

ответ

-1

Используйте приведенный ниже код, чтобы получить текст в текстовом поле и подтвердить их.

let app = XCUIApplication() 
     let nameTextField = app.textFields.element(boundBy: 0) 

     // based on index you can get text field. 

     nameTextField.typeText("userName") 

     let passwordTextField = app.textFields.element(boundBy: 1) 

     // it returns the password field. 

     passwordTextField.typeText("password") 

     let userName : String = nameTextField.value 

     // returns the text in text field. 

     let password : String = passwordTextField.value 

     if userName.isEmpty || password.isEmpty { 

      print("Text fields are empty"); 

     } 
     else { 

      let validateButton = app.buttons.element(boundsBy: 0) 

      validateButton.tap() 

     } 

Позже проверьте состояние, если существует какое-либо предупреждение. Если существуют ваши кредитные ошибки. В противном случае дождитесь следующего XCUIElement. использовать этот код для ожидания

let existsPredicate = NSPredicate(format: "exists == true") 
    expectation(for: existsPredicate, 
       evaluatedWith: element, handler: nil) 
    waitForExpectations(timeout: 20, handler: nil) 
+0

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

0
@interface NSString (emailValidation) 
    - (BOOL)isValidEmail; 
@end 

реализация

@implementation NSString (emailValidation) 
-(BOOL)isValidEmail 
{ 
    BOOL stricterFilter = NO; // Discussion http://blog.logichigh.com/2010/09/02/validating-an-e-mail-address/ 
    NSString *stricterFilterString = @"^[A-Z0-9a-z\\._%+-][email protected]([A-Za-z0-9-]+\\.)+[A-Za-z]{2,4}$"; 
    NSString *laxString = @"^[email protected]([A-Za-z0-9-]+\\.)+[A-Za-z]{2}[A-Za-z]*$"; 
    NSString *emailRegex = stricterFilter ? stricterFilterString : laxString; 
    NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex]; 
    return [emailTest evaluateWithObject:self]; 
} 
@end 

пароль valiation

-(void)textFieldDidEndEditing:(UITextField *)textField{ 
    int numberofCharacters = 0; 
    BOOL lowerCaseLetter,upperCaseLetter,digit,specialCharacter = 0; 
    if([textField.text length] >= 10) 
    { 
     for (int i = 0; i < [textfield.text length]; i++) 
     { 
     unichar c = [textfield.text characterAtIndex:i]; 
     if(!lowerCaseLetter) 
     { 
      lowerCaseLetter = [[NSCharacterSet lowercaseLetterCharacterSet] characterIsMember:c]; 
     } 
     if(!upperCaseLetter) 
     { 
      upperCaseLetter = [[NSCharacterSet uppercaseLetterCharacterSet] characterIsMember:c]; 
     } 
     if(!digit) 
     { 
      digit = [[NSCharacterSet decimalDigitCharacterSet] characterIsMember:c]; 
     } 
     if(!specialCharacter) 
     { 
      specialCharacter = [[NSCharacterSet symbolCharacterSet] characterIsMember:c]; 
     } 
     } 

     if(specialCharacter && digit && lowerCaseLetter && upperCaseLetter) 
     { 
     //do what u want 
     } 
     else 
     { 
     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" 
                 message:@"Please Ensure that you have at least one lower case letter, one upper case letter, one digit and one special character" 
                 delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
     [alert show]; 
     } 

    } 
    else 
    { 
     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" 
                 message:@"Please Enter at least 10 password" 
                 delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
     [alert show]; 
    } 
} 
+0

, спасибо за ваш отличный ответ, но мое требование не в этом. –

-1

магазин E-mail и пароль в NSUserDefaults:

[[NSUserDefaults standardUserDefaults] setObject:@"[email protected]" forKey:@"Email"]; 
[[NSUserDefaults standardUserDefaults] setObject:@"[email protected]" forKey:@"Password"]; 

Validation Для Email:

-(BOOL)NSStringIsValidEmail:(NSString *)checkString 
{ 
    BOOL stricterFilter = NO; 
    NSString *stricterFilterString = @"^[A-Z0-9a-z\\._%+-][email protected]([A-Za-z0-9-]+\\.)+[A-Za-z]{2,4}$"; 
    NSString *laxString = @"^[email protected]([A-Za-z0-9-]+\\.)+[A-Za-z]{2}[A-Za-z]*$"; 
    NSString *emailRegex = stricterFilter ? stricterFilterString : laxString; 
    NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex]; 
    return [emailTest evaluateWithObject:checkString]; 
} 

Validation Для Strong Пароль:

- (BOOL)strongPassword:(NSString *)yourText 
{ 
    BOOL strongPwd = YES; 

    //Checking length 
    if([yourText length] < 8) 
     strongPwd = NO; 

    //Checking uppercase characters 
    NSCharacterSet *charSet = [NSCharacterSet uppercaseLetterCharacterSet]; 
    NSRange range = [yourText rangeOfCharacterFromSet:charSet]; 
    if(range.location == NSNotFound) 
     strongPwd = NO; 

    //Checking lowercase characters 
    charSet = [NSCharacterSet lowercaseLetterCharacterSet]; 
    range = [yourText rangeOfCharacterFromSet:charSet]; 
    if(range.location == NSNotFound) 
     strongPwd = NO; 

    //Checking special characters 
    charSet = [[NSCharacterSet alphanumericCharacterSet] invertedSet]; 
    range = [yourText rangeOfCharacterFromSet:charSet]; 
    if(range.location == NSNotFound) 
     strongPwd = NO; 

    return strongPwd; 
} 

проверка достоверности электронной почты или пароль, если успех, то войдите еще можно показать предупреждение:

-(IBAction)Login:(id)sender 
{ 
    NSString *Email = [[NSUserDefaults standardUserDefaults]objectForKey:@"Email"]; 
    NSString *Password = [[NSUserDefaults standardUserDefaults]objectForKey:@"Password"]; 

    BOOL flagEmail,flagPassword = false; 

    if(![Email isEqualToString:@""]) 
    { 
     flagEmail = [self NSStringIsValidEmail:Email]; 
     if(flagEmail) 
     { 
      NSLog(@"Email is accepted"); 
     } 
     else 
     { 
      NSLog(@"Email is not valid"); 
     } 
    } 
    else 
    { 
     NSLog(@"Email is empty"); 
    } 

    if(![Password isEqualToString:@""]) 
    { 
     flagPassword = [self strongPassword:Password]; 
     if(flagPassword) 
     { 
      NSLog(@"Password is accepted"); 
     } 
     else 
     { 
      NSLog(@"Password is not valid"); 
     } 
    } 
    else 
    { 
     NSLog(@"Password is empty"); 
    } 

    if(flagEmail && flagPassword) 
    { 
     NSLog(@"Email and password both are valid and not empty"); 
    } 
} 
+0

, пожалуйста, прочитайте мой вопрос и ответьте, это не мое требование, я должен проверить текстовые поля электронной почты и пароля в UITesting. –

+0

В моем проекте мне нужно написать тестовые окна для проверки текстовых полей –

+1

Я думаю, эта ссылка поможет вам: http://stackoverflow.com/questions/23613698/check-email-during-xcode-ui-testing –