Инициализацию класса в цикл, вот как? C#

The_Maxai

Client
Регистрация
07.09.2016
Сообщения
69
Благодарностей
5
Баллы
8
Хотел обернуть в цикл инициализацию,чтобы пробыл до того момента когда не получится, но за циклом не видно :( в AppiumStart я добавил строчку "taskkill /F /IM node.exe" (Чтобы если уже есть закрывала)
Вся эта шляпа мне нужна чтобы не открывать отдельно AppiumStart и чтобы можно было использовать объект в других методах (Но это не точно :-))

Я с темы http://zennolab.com/discussion/threads/upravlenie-ljubymi-android-prilozhenijami-na-smartfone-iz-zp.33511/



Код:
Process.Start("AppiumStart.bat");

bool i = false;
                while (i != true)
                {
                    try
                    {
                        AndroidDriver<IWebElement> driver = new AndroidDriver<IWebElement>(new Uri("http://127.0.0.1:4723/wd/hub"), cap);                 
                            i = true;
                        }                 
                    catch
                    {
                    }
                    Thread.Sleep(1000);
                }
 

Yuri

Client
Регистрация
28.11.2014
Сообщения
129
Благодарностей
24
Баллы
18
Так за циклом и не будет видно. Все переменные, инициализируемые в цикле - локальные

Код:
Process.Start("AppiumStart.bat");
AndroidDriver<IWebElement> driver;
bool i = false;
             
while (i != true)
{
try
{
   driver = new AndroidDriver<IWebElement>(new Uri("http://127.0.0.1:4723/wd/hub"), cap);             
   i = true;
   if(!i)driver=null;
}             
catch {  }

Thread.Sleep(1000);
}
 

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
Код:
if(!i)driver=null;
Эта строка никогда не выполнится.
Правильнее код записать так:

Код:
Process.Start("AppiumStart.bat");
AndroidDriver<IWebElement> driver;
        
for (int i = 0; ;i++)
{
    try
    {
        driver = new AndroidDriver<IWebElement>(new Uri("http://127.0.0.1:4723/wd/hub"), cap);      
        break;
    }      
    catch
    {
        if (i > 30)
             throw new TimeoutException("кончились попытки");
        Thread.Sleep(1000);
    }
}
P.S. Я хз что за такой объект AndroidDriver<IWebElement>, который может при инициализации выдавать ошибку.
 
Последнее редактирование:
  • Спасибо
Реакции: The_Maxai

Yuri

Client
Регистрация
28.11.2014
Сообщения
129
Благодарностей
24
Баллы
18
Код:
if(!i)driver=null;
Эта строка никогда не выполнится.
Правильнее код записать так:

Код:
Process.Start("AppiumStart.bat");
AndroidDriver<IWebElement> driver;
       
for (int i = 0; ;i++)
{
    try
    {
        driver = new AndroidDriver<IWebElement>(new Uri("http://127.0.0.1:4723/wd/hub"), cap);     
        break;
    }     
    catch
    {
        if (i > 30)
             throw new TimeoutException("кончились попытки");
        Thread.Sleep(1000);
    }
}
P.S. Я хз что за такой объект AndroidDriver<IWebElement>, который может при инициализации выдавать ошибку.
Что-то я не посмотрел на логику взятия i ))) Конечно, косяк с моей стороны.
 

Yuri

Client
Регистрация
28.11.2014
Сообщения
129
Благодарностей
24
Баллы
18
Код:
if(!i)driver=null;
P.S. Я хз что за такой объект AndroidDriver<IWebElement>, который может при инициализации выдавать ошибку.
Ну это-же загрузка страницы. А выдать ошибку запросто может по 100500 причин
 
  • Спасибо
Реакции: The_Maxai

The_Maxai

Client
Регистрация
07.09.2016
Сообщения
69
Благодарностей
5
Баллы
8
Спасибо за помощь, забыли проехали...
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)