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

  • Автор темы Автор темы The_Maxai
  • Дата начала Дата начала

The_Maxai

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

Я с темы http://zennolab.com/discussion/thre...roid-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);
                }
 
Так за циклом и не будет видно. Все переменные, инициализируемые в цикле - локальные

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

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