public class Auth
{
ZDE_Emulation.CheckPresentElement check;
ZDE_Emulation.ClickToElement click;
ZDE_Emulation.SetText text;
ZDE_Emulation.SwipeAndClickToElement swipeAndClick;
ZDE_Emulation.SwipeToElement swipe;
ZDE_Emulation.WaitElement wait;
Instance instance;
IZennoPosterProjectModel project;
public static object readAccLock = new object();
string login = string.Empty;
string password = string.Empty;
string addMail = string.Empty;
int counter;
public Auth(Instance instance, IZennoPosterProjectModel project)
{
this.project = project;
this.instance = instance;
check = new CheckPresentElement(instance,project);
click = new ClickToElement(instance,project);
text = new SetText(instance,project);
swipeAndClick = new SwipeAndClickToElement(instance,project);
swipe = new SwipeToElement(instance,project);
wait = new WaitElement(instance,project);
}
public void Start()
{
GoToAuthPage(); //Метод перехода на страницу аунтефикации
SetLoginAndPassword(); //Метод ввода логина и пароля
ConfirmGoogleTrash(); //Метод подтверждения политики, синхронизации и прочего барахла
}
void GoToAuthPage()
{
instance.DroidInstance.App.Open("com.android.vending");
try
{
click.ByXpath("//*[@text=\"Войти\"]", 15);
}
catch (Exception)
{
instance.DroidInstance.App.Close("com.android.vending");
instance.DroidInstance.App.CleanCache("com.android.vending");
instance.DroidInstance.App.Open("com.android.vending");
click.ByXpath("//*[@text=\"Войти\"]", 15);
}
while (check.ByXpath("//*[@text=\"Проверка…\"]"))
{
if (counter == 20)
{
throw new Exception("Не прошли проверку.");
}
if (check.ByXpath("//*[@text=\"Произошла ошибка\"]"))
{
throw new Exception("Не прошли проверку.");
}
Thread.Sleep(3000);
counter++;
}
Thread.Sleep(5000);
if (!check.ByXpath("//*[@text=\"Используйте аккаунт Google. \"]"))
throw new Exception("Не вышли на страницу входа.");
}
void SetLoginAndPassword()
{
GetAccount();
text.ByXpathClick("//*[@resource-id=\"identifierId\"]|//*[@class='android.widget.EditText']", login, true);
wait.ByXPath("//*[@text=\"Показать пароль\"]");
text.ByXpathClick("//*[@class='android.widget.EditText' and @index='0' and @clickable='true' and @focusable='true']", password, true);
Thread.Sleep(10000);
if (check.ByXpath("//*[@text=\"Подтвердите свою личность\"]"))
{
click.ByXpath("//*[@text=\"Подтвердите резервный адрес электронной почты\"]", 3);
text.ByXpathClick("//*[@class='android.widget.EditText' and @index='0' and @clickable='true' and @focusable='true']", addMail, true);
Thread.Sleep(10000);
}
}
void ConfirmGoogleTrash()
{
if (check.ByXpath("//*[@text=\"Резервное копирование контактов\"]"))
{
swipeAndClick.ByXpath("//*[@text=\"Не включать\"]");
Thread.Sleep(5000);
}
if (check.ByXpath("//*[@text=\"Добро пожаловать!\"]"))
{
swipeAndClick.ByXpath("//*[@text='Принимаю']");
wait.ByXPath("//*[@text='Сервисы Google']|//*[@text='Вы вошли в аккаунт']|//*[@text='Не включать']");
if (check.ByXpath("//*[@text='Не включать']"))
{
click.ByXpath("//*[@text='Не включать']", 2);
wait.ByXPath("//*[@text='Не сейчас']|//*[@text='Сервисы Google']");
if (check.ByXpath("//*[@text='Не сейчас']"))
{
click.ByXpath("//*[@text='Не сейчас']", 2);
}
}
if (check.ByXpath("//*[@text='Вы вошли в аккаунт']"))
{
click.ByXpath("//*[@text='Не сейчас']", 2);
wait.ByXPath("//*[@text='Сервисы Google']");
}
click.ByXpath("//*[@text='ВКЛ']", 2);
click.ByXpath("//*[@text='ЕЩЁ']|//*[@text='Ещё']", 2);
click.ByXpath("//*[@text='ПРИНЯТЬ']|//*[@text='Принят']", 10);
try
{
wait.ByXPath("//*[@text='Хотите подписаться на рассылку?']|//*[@text='Условия использования']");
if (check.ByXpath("//*[@text='Хотите подписаться на рассылку?']"))
{
click.ByXpath("//*[@text='Нет']", 2);
}
if (check.ByXpath("//*[@text='Условия использования']"))
{
click.ByXpath("//*[@text=\"Принять\"]", 10);
}
}
catch (Exception) { }
}
}
}