Всем добрый день! Автоматизацией начал заниматься с лета. И часто появляются ошибки, потом вопросы, пробы, слезы и прочее. Без ошибок никуда, понимаю. Но задумался, возможно я просто чуть усложняю или упускаю какой то важный момент, из-за которого во всех шаблонах периодически появляются ошибки и мне нужно их править.
И ВОПРОС, не в решении проблемы, а хочется получить советы от профи - корректно ли я строю логику кубиков и в принципе шаблона. Вот.
Скинул примеры пары кубиков c# и самих шаблонов.
1.
2.
И ВОПРОС, не в решении проблемы, а хочется получить советы от профи - корректно ли я строю логику кубиков и в принципе шаблона. Вот.
Скинул примеры пары кубиков c# и самих шаблонов.
1.
C#:
// проверка выполнения квеста. Проверяет див, который выделяет зеленым весь элемент
HtmlElement check = CommonCode.CheckElement("//div[contains(., 'Follow @WalrusProtocol on Twitter')]/div[contains(@class, 'bg-success')]", instance);
if(!check.IsVoid)
{
project.SendInfoToLog("Квест выполнен!");
return check;
}
project.SendInfoToLog("Квест не выполнен! Иду делать!");
// приступаю делать квест по порядку. Всего заданий 5.
for (int i = 0; i < 3; i++)
{
// жмет кнопки
CommonCode.Click("//p[text()='Follow @WalrusProtocol on Twitter']", instance);
System.Threading.Thread.Sleep(20000);
HtmlElement tw = CommonCode.CheckElement("//button[@data-testid='confirmationSheetConfirm']", instance);
if(!tw.IsVoid)
{
CommonCode.Click("//button[@data-testid='confirmationSheetConfirm']", instance);
// закрываю вкладку и на всякий случай активирую Galxe
Tab tab = instance.ActiveTab;
tab.Close();
Tab tab1 = instance.GetTabByAddress("galxe");
tab1.SetActive();
project.SendInfoToLog("Вернулся со страницы твитера на Галку!");
}
else
{
project.SendInfoToLog("Проблемы с твитером!");
Tab tab = instance.ActiveTab;
tab.Close();
Tab tab1 = instance.GetTabByAddress("galxe");
tab1.SetActive();
}
System.Threading.Thread.Sleep(2000);
System.Threading.Thread.Sleep(3000);
CommonCode.Click("//p[text()='Follow @WalrusProtocol on Twitter']/following::button", instance);
// пауза
System.Threading.Thread.Sleep(5000);
project.SendInfoToLog("Приступаю проверять квест после выполнения!");
// проверка выполнения квеста
HtmlElement check1 = CommonCode.CheckElement("//div[contains(., 'Follow @WalrusProtocol on Twitter')]/div[contains(@class, 'bg-success')]", instance);
if(!check1.IsVoid)
{
project.SendInfoToLog("Квест выполнен!");
break;
}
else
{
project.SendInfoToLog("Квест не выполнен!");
System.Threading.Thread.Sleep(60000);
}
if(i == 3)
{
project.SendInfoToLog("Квест не получилось выполнить 3 раза!");
throw new Exception("Квест не получилось выполнить 3 раза!");
}
}
C#:
// жму кнопки на странице
CommonCode.Click("//a[contains(text(), 'Get some $TOKEN')]", instance, 30);
CommonCode.Click("//span[text()='Sign in with']", instance, 30);
//пауза
System.Threading.Thread.Sleep(5000);
//после клика на странице твитера проверяю и отрабатываю кнопку
HtmlElement fail = CommonCode.CheckElement("//div[@id='ScriptLoadFailure']", instance, 30);
if(!fail.IsVoid)
{
CommonCode.Click("//button[@type='submit']", instance);
}
HtmlElement el = CommonCode.CheckElement("//button[@data-testid='OAuth_Consent_Button']", instance, 30);
if(!el.IsVoid)
{
CommonCode.Click("//button[@data-testid='OAuth_Consent_Button']", instance, 30);
}
else
{
throw new Exception("Не получается подключить Аркаду к твитеру! Завершаю работу!");
}
System.Threading.Thread.Sleep(10000);
CommonCode.Click("//span[text()='2) Follow']/following-sibling::button", instance, 30);
System.Threading.Thread.Sleep(10000);
Tab tab = instance.ActiveTab;
if ((tab.IsVoid) || (tab.IsNull)) return -1;
if (tab.IsBusy) tab.WaitDownloading();
tab.Navigate("https://arcade.soniclabs.com", "");
if (tab.IsBusy) tab.WaitDownloading();
//если все ок - то жму получить токены
CommonCode.Click("//a[contains(text(), 'Get some $TOKEN')]", instance, 30);