Перейти к содержимому

Фотография

Что сделать чтобы не закрывался RC и браузер при возникновении ошибки


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 10

#1 crazybutcher

crazybutcher

    Новый участник

  • Members
  • Pip
  • 12 сообщений

Отправлено 26 января 2010 - 11:14

Здравствуйте!
В общем в чем проблема: когда юзал VisualStudio, то при возникновении проблем в скрипте, студия высвечивала на какой строке проблемы, но не выключала RC и браузер. Можно было исправить скрипт и продолжить его прогон с того же места, где и остановился. Сейчас юзаю Eclipse. Если сдеть возникает ошибка в строке, то он тушит RC и браузер, вследствии приходится прогонять по новой весь скрипт с начала.
Смотрел в настройки Eclipce, но там, вроде, нет ничего такого.
Подскажите что можно сделать.
Спасибо
  • 0

#2 KaNoN

KaNoN

    АЦЦКИЙ СОТОНА

  • Members
  • PipPipPipPipPipPip
  • 1 260 сообщений
  • ФИО:Колесник Николай
  • Город:Днепропетровск > Киев > Лондон

Отправлено 26 января 2010 - 12:47

Здравствуйте!
В общем в чем проблема: когда юзал VisualStudio, то при возникновении проблем в скрипте, студия высвечивала на какой строке проблемы, но не выключала RC и браузер. Можно было исправить скрипт и продолжить его прогон с того же места, где и остановился. Сейчас юзаю Eclipse. Если сдеть возникает ошибка в строке, то он тушит RC и браузер, вследствии приходится прогонять по новой весь скрипт с начала.
Смотрел в настройки Eclipce, но там, вроде, нет ничего такого.
Подскажите что можно сделать.
Спасибо

Максимум могу порекомендовать запускать тесты в режиме отладки с установкой брекпоинтов в нужных местах. Только правка кода во время сессии отладки не приведет к выполнению исправленного кода. Надо перезаупскать тест.
  • 0

#3 Boltick

Boltick

    Специалист

  • Members
  • PipPipPipPipPip
  • 596 сообщений
  • ФИО:Алексей
  • Город:планета Земля

Отправлено 26 января 2010 - 15:39

Здравствуйте!
В общем в чем проблема: когда юзал VisualStudio, то при возникновении проблем в скрипте, студия высвечивала на какой строке проблемы, но не выключала RC и браузер. Можно было исправить скрипт и продолжить его прогон с того же места, где и остановился. Сейчас юзаю Eclipse. Если сдеть возникает ошибка в строке, то он тушит RC и браузер, вследствии приходится прогонять по новой весь скрипт с начала.
Смотрел в настройки Eclipce, но там, вроде, нет ничего такого.
Подскажите что можно сделать.
Спасибо

Не пробовали отлавливать Exception-ы?
Это может помочь...

try {
  // выполняется скрипт
  // ...
  // ...
} catch (Exception e) {
  // вылетел Exception
  // делаем что нам нужно и продолжаем работу
}
  // продолжаем выполнение скрипта

Вот...
  • 0
Алексей Булат
Про Тестинг

#4 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 872 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 26 января 2010 - 16:14

Максимум могу порекомендовать запускать тесты в режиме отладки с установкой брекпоинтов в нужных местах. Только правка кода во время сессии отладки не приведет к выполнению исправленного кода. Надо перезаупскать тест.

Если править код впереди -- всё получится. А если какая-то строчка уже выполнилась, неважно успешно или со сбоем -- её действительно уже править бесполезно, она повторно не выполнится, надо перезапускать.
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#5 KaNoN

KaNoN

    АЦЦКИЙ СОТОНА

  • Members
  • PipPipPipPipPipPip
  • 1 260 сообщений
  • ФИО:Колесник Николай
  • Город:Днепропетровск > Киев > Лондон

Отправлено 26 января 2010 - 17:36

Максимум могу порекомендовать запускать тесты в режиме отладки с установкой брекпоинтов в нужных местах. Только правка кода во время сессии отладки не приведет к выполнению исправленного кода. Надо перезаупскать тест.

Если править код впереди -- всё получится. А если какая-то строчка уже выполнилась, неважно успешно или со сбоем -- её действительно уже править бесполезно, она повторно не выполнится, надо перезапускать.

Абсолютно согласен. Просто использовать режим отладки я порекомендовал только потому, что подобный режим наиболее подходит под описание топик-стартера. В частности подходит возможностью контроля выполнения определенных участков.
  • 0

#6 crazybutcher

crazybutcher

    Новый участник

  • Members
  • Pip
  • 12 сообщений

Отправлено 04 февраля 2010 - 10:30

Я что-то слабо верю, что нет выхода из этой ситуации.
В С# нормально работает debug с кодод такого типа:
namespace SeleniumTests
[codebox]
{
[TestFixture]
public class Untitled
{ private ISelenium selenium;
private StringBuilder verificationErrors;
[SetUp]
public void SetupTest()
{selenium = new DefaultSelenium("localhost", 4444, "*chrome", "http://it4business.ru/");
selenium.Start();
}
[Test]
public void TheUntitledTest()
{
selenium.Open("http://google.com");
selenium....
}
[/codebox]
В java нормально с таким:
[codebox]
public class ololo {
static Selenium selenium;
public static void main(String[]arg) throws Exception
{
selenium = new DefaultSelenium("localhost",
4444, "*chrome", "http://www.google.com");
selenium.start();
selenium.open("http://www.google.com");
} [/codebox]
но в чем его минус, так это в том,что с таким кодом не запускается JUnit.
Подскажите что можно наколдовать, чтобы и debug работал и JUnit запускался =)
  • 0

#7 KaNoN

KaNoN

    АЦЦКИЙ СОТОНА

  • Members
  • PipPipPipPipPipPip
  • 1 260 сообщений
  • ФИО:Колесник Николай
  • Город:Днепропетровск > Киев > Лондон

Отправлено 04 февраля 2010 - 11:13

Я что-то слабо верю, что нет выхода из этой ситуации.
В С# нормально работает debug с кодод такого типа:
namespace SeleniumTests
...

В java нормально с таким:

public class ololo {		static Selenium selenium;		public static void main(String[]arg) throws Exception		{			selenium = new DefaultSelenium("localhost",		            4444, "*chrome", "http://www.google.com");			selenium.start();						selenium.open("http://www.google.com");}
но в чем его минус, так это в том,что с таким кодом не запускается JUnit.
Подскажите что можно наколдовать, чтобы и debug работал и JUnit запускался =)

Так вы и оформляйте тесты, как JUnit-тесты. В Eclipse такие тесты в режиме отладки запускаются по правому клику выбором меню Debug As... > JUnit Test
  • 0

#8 crazybutcher

crazybutcher

    Новый участник

  • Members
  • Pip
  • 12 сообщений

Отправлено 04 февраля 2010 - 11:30

Я что-то слабо верю, что нет выхода из этой ситуации.
В С# нормально работает debug с кодод такого типа:
namespace SeleniumTests
...

В java нормально с таким:

public class ololo {		static Selenium selenium;		public static void main(String[]arg) throws Exception		{			selenium = new DefaultSelenium("localhost",		            4444, "*chrome", "http://www.google.com");			selenium.start();						selenium.open("http://www.google.com");}
но в чем его минус, так это в том,что с таким кодом не запускается JUnit.
Подскажите что можно наколдовать, чтобы и debug работал и JUnit запускался =)

Так вы и оформляйте тесты, как JUnit-тесты. В Eclipse такие тесты в режиме отладки запускаются по правому клику выбором меню Debug As... > JUnit Test

А как их оформлять? Если скинуть просто этот код в JUnit Test Case, то при выборе запуска высвечивается только Java Application, но никак ни Junit Test
  • 0

#9 KaNoN

KaNoN

    АЦЦКИЙ СОТОНА

  • Members
  • PipPipPipPipPipPip
  • 1 260 сообщений
  • ФИО:Колесник Николай
  • Город:Днепропетровск > Киев > Лондон

Отправлено 04 февраля 2010 - 16:04

А как их оформлять? Если скинуть просто этот код в JUnit Test Case, то при выборе запуска высвечивается только Java Application, но никак ни Junit Test

Тут нужно сделать несколько проверок. Во-первых, надо убедиться, что тестовые методы имеют соответствующую аннотацию @Test или же имя начинается с префикса test.

Также, возможно, вам понадобится установить JUnit плагин к эклипсу. Например, здесь, в частности URL обновления: http://www.junitfactory.com/update/

Да и просто посмотрите в гугле JUnit eclipse plugin
  • 0

#10 frei_by

frei_by

    Постоянный участник

  • Members
  • PipPipPip
  • 177 сообщений
  • ФИО:Дмитрий

Отправлено 19 октября 2010 - 11:32

Не пробовали отлавливать Exception-ы?
Это может помочь...


я пробовал.
Гоняю тесты из под NetBeans через PHPUnit
...
(спустя час) - заработало, но всё равно очень странно:

код

$arr = array (
           '//a[contains(text(),\'Компьютеры\')]@href',
           '//a[contains(text(),\'Компьютеры\')]@href',
           '//a[contains(text(),\'Компьютеры\')]@href',
           '//a[contains(text(),\'Компьютеры\')]@href',
           '//a[contains(text(),\'Компьютеры\')]@href',
           '//a[contains(text(),\'Компьютеры\')]@href',
           '//a[contains(text(),\'Компьютеры\')]@href',
           '//a[contains(text(),\'Компьютеры\')]@href',
           '//a[contains(text(),\'Компьютеры\')]@href',
           '//a[contains(text(),\'Компьютеры\')]@href',
           '//a[contains(text(),\'Компьютеры\')]@href'
                    );

       for ($i=0;$i<10;$i++)
       {
           $xpath = $arr[$i];
           try
           {$name = $this->getAttribute($xpath);
           fwrite ($log_h, "№-$i OK: getAttribute(".$xpath.") = $name \n ");
           }
           catch (Exception $e)
           {fwrite ($log_h, "№-$i ERROR: function getAttribute(".$xpath.") return error!\n ");}
       }

выдаёт запись в лог вроде

continue log 
№-0 OK: getAttribute(//a[contains(text(),'Компьютеры')]@href) = /Kompjutery/ 
 №-1 OK: getAttribute(//a[contains(text(),'Компьютеры')]@href) = /Kompjutery/ 
 №-2 OK: getAttribute(//a[contains(text(),'Компьютеры')]@href) = /Kompjutery/ 
 №-3 OK: getAttribute(//a[contains(text(),'Компьютеры')]@href) = /Kompjutery/ 
 №-4 OK: getAttribute(//a[contains(text(),'Компьютеры')]@href) = /Kompjutery/ 
 №-5 OK: getAttribute(//a[contains(text(),'Компьютеры')]@href) = /Kompjutery/ 
 №-6 OK: getAttribute(//a[contains(text(),'Компьютеры')]@href) = /Kompjutery/ 
 №-7 OK: getAttribute(//a[contains(text(),'Компьютеры')]@href) = /Kompjutery/ 
 №-8 OK: getAttribute(//a[contains(text(),'Компьютеры')]@href) = /Kompjutery/ 
 №-9 OK: getAttribute(//a[contains(text(),'Компьютеры')]@href) = /Kompjutery/

Но если заменить одно из условий напирмер в массиве

$arr = array (
           '//a[contains(text(),\'Компьютеры\')]@href',
           '//a[contains(text(),\'Компьютеры\')]@href',
           '//a[contains(text(),\'Компьютеры\')]@href',
           '//a[contains(text(),\'Компьютеры\')]@href',
           '//a[contains(text(),\'Компьютеры\')]@href',
           '//a[contains(text(),\'Компьютеры\')]@href',
           '//a[contains(text(),\'!Компьютеры\')]@href',
           '//a[contains(text(),\'Компьютеры\')]@href',
           '//a[contains(text(),\'Компьютеры\')]@href',
           '//a[contains(text(),\'Компьютеры\')]@href',
           '//a[contains(text(),\'Компьютеры\')]@href'
                    );

(добавили лишний символ 6 элементу начиная с нуля,)
то тот-же самый скрипт выдаст такой результат:

continue log 
№-0 OK: getAttribute(//a[contains(text(),'Компьютеры')]@href) = /Kompjutery/ 
 №-1 OK: getAttribute(//a[contains(text(),'Компьютеры')]@href) = /Kompjutery/ 
 №-2 OK: getAttribute(//a[contains(text(),'Компьютеры')]@href) = /Kompjutery/ 
 №-3 OK: getAttribute(//a[contains(text(),'Компьютеры')]@href) = /Kompjutery/ 
 №-4 OK: getAttribute(//a[contains(text(),'Компьютеры')]@href) = /Kompjutery/ 
 №-5 OK: getAttribute(//a[contains(text(),'Компьютеры')]@href) = /Kompjutery/ 
 №-6 ERROR: function getAttribute(//a[contains(text(),'!Компьютеры')]@href) return error!
 №-7 ERROR: function getAttribute(//a[contains(text(),'Компьютеры')]@href) return error!
 №-8 ERROR: function getAttribute(//a[contains(text(),'Компьютеры')]@href) return error!
 №-9 ERROR: function getAttribute(//a[contains(text(),'Компьютеры')]@href) return error!

т.е. получается если одно из условий ляснулось, то и на все остальные вешается Expection...
Это особенность PHPUnit ?
  • 0

#11 frei_by

frei_by

    Постоянный участник

  • Members
  • PipPipPip
  • 177 сообщений
  • ФИО:Дмитрий

Отправлено 19 октября 2010 - 15:17

Почитал про Unit. Получается что да, особенность.
Короче если тест завалился то его уже ничего не спасёт, только новый тест.

Если использовать тест как драйвер для броузера с целью именно безошибочно управлять бруозером - то нужно просто програмно избегать ошибок. Например всяческие
$r = $this->isElementPresent ('link=Компьютеры');
а если делать именно проверку на сбои, то нужно делать множество мальеньких тестиков и выполнять их. Почти во всех местах прочитал одно и то-же. Как говорится, пошёл искать копейку - чтобы купить яблоко - копейку не нашёл, зато нашёл яблоню.
  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных