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

Фотография

Одна кнопка не прокликивается дважды в рамках одного теста в GC

Google Chrome C# web driver 2.43.1

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

#1 mazik7

mazik7

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

  • Members
  • Pip
  • 63 сообщений
  • ФИО:Мазик
  • Город:Красноярск

Отправлено 24 сентября 2014 - 05:20

Всем привет.

У меня возникла проблемка, и мне стало интересно, сталкивался ли кто-нибудь с подобным.

Использую selenium WebDriver 2.43.1, пишу на C#, с помощью MS Visual Studio 2013.

Суть проблемы такая. Я прогоняю тест. В ходе теста, производится клик на кнопку и выполняется действие. После чего я обновляю страницу, несколько меняю данные и нажимаю на кнопку опять. FF выполняет оба действия, а вот GC... GC второй раз не прокликивает. И не важно, как я обновлял страницу. Обновлением с помощью навигации на портале, или даже после входа/выхода из него - результат один и он плачевен. Поэтому подскажите пожалуйста, как вы решили такую проблему. 

 

P.S. SendKeys(Keys.Enter) вместо Click() мне не помог.


  • 0

:smile:


#2 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 833 сообщений


Отправлено 24 сентября 2014 - 05:58

А вручную, ситуация воспроизводится в хроме?


  • 0

#3 mazik7

mazik7

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

  • Members
  • Pip
  • 63 сообщений
  • ФИО:Мазик
  • Город:Красноярск

Отправлено 24 сентября 2014 - 06:23

А вручную, ситуация воспроизводится в хроме?

Да, иначе я бы не написал бы сюда.


  • 0

:smile:


#4 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 833 сообщений


Отправлено 24 сентября 2014 - 06:42

Так пишите разработчикам что у них ошибка.

А не сюда. Вручную же воспроизвелось, значит проблема точно не в селениуме.


  • 0

#5 mazik7

mazik7

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

  • Members
  • Pip
  • 63 сообщений
  • ФИО:Мазик
  • Город:Красноярск

Отправлено 24 сентября 2014 - 07:18

Так пишите разработчикам что у них ошибка.

А не сюда. Вручную же воспроизвелось, значит проблема точно не в селениуме.

Стоп, не то написал. Видимо не так понял я. Вручную все нормально кликается и проблема как раз в селениуме.


  • 0

:smile:


#6 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 833 сообщений


Отправлено 24 сентября 2014 - 07:26

Укажите версии хрома и хромдрайвера что вы используете.


  • 0

#7 Snap

Snap

    Специалист

  • Members
  • PipPipPipPipPip
  • 980 сообщений
  • ФИО:Роман
  • Город:Москва


Отправлено 24 сентября 2014 - 07:34

И сообщение об ошибке тоже не помешало бы...


  • 0

#8 mazik7

mazik7

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

  • Members
  • Pip
  • 63 сообщений
  • ФИО:Мазик
  • Город:Красноярск

Отправлено 24 сентября 2014 - 08:03

И сообщение об ошибке тоже не помешало бы...

Сообщения об ошибке нет в принципе. Действие просто не выполняется и все. 
 

 

Укажите версии хрома и хромдрайвера что вы используете.

Хром 37.0.2062.120 m, на 7 и на 8 (На виртуалке). Он сам обновляется по идее. Но надо бы попробовать и с предыдущими версиями поработать.

Драйвер... 2.10 вроде как (1.05.14). 


  • 0

:smile:


#9 mazik7

mazik7

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

  • Members
  • Pip
  • 63 сообщений
  • ФИО:Мазик
  • Город:Красноярск

Отправлено 24 сентября 2014 - 08:04

И сообщение об ошибке тоже не помешало бы...

Поясню, он типа проходит этот шаг, и click делает, но эффекта нет.


  • 0

:smile:


#10 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 833 сообщений


Отправлено 24 сентября 2014 - 09:12

Вы попробуйте в хроме (в тесте клик закомментируте, поставьте слип банально) сами кликнуть по кнопке, посмотрите на реакцию. Вполне может быть проблема в приложении.

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


  • 0

#11 barancev

barancev

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

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


Отправлено 24 сентября 2014 - 09:41

Вы гораздо быстрее получите ответ на свой вопрос, если вместо описания просто укажете:
-- фрагмент исполняемого кода, в котором у вас возникает ошибка
-- детальное сообщение об ошибке (stacktrace)
-- ссылку на страницу, на которой этот фрагмент кода можно выполнить и тем самым воспроизвести вашу проблему.


  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#12 mazik7

mazik7

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

  • Members
  • Pip
  • 63 сообщений
  • ФИО:Мазик
  • Город:Красноярск

Отправлено 24 сентября 2014 - 11:11

Вы гораздо быстрее получите ответ на свой вопрос, если вместо описания просто укажете:
-- фрагмент исполняемого кода, в котором у вас возникает ошибка
-- детальное сообщение об ошибке (stacktrace)
-- ссылку на страницу, на которой этот фрагмент кода можно выполнить и тем самым воспроизвести вашу проблему.

- Ошибки нет, что не понятного то.

- То же самое.

- Ссылку на страницу дать точно не могу. Ибо страница не в общем доступе.
 

А вообще я все это уже писал.

 

 

И сообщение об ошибке тоже не помешало бы...

Поясню, он типа проходит этот шаг, и click делает, но эффекта нет.

 

 

Эх... Это ошибка webdriver'a и только его. Но если есть желание проверить код исполняемый в другом браузере, то вот:

driver.FindElement(By.XPath("//input[@value='Issue']")).Click();       //Issue button
driver.FindElement(By.XPath("//div[@id='pagereturnbutton']/input")).Click();
driver.FindElement(By.XPath("//div[@id='btn_grantuser']/input")).Click();  //Обновление
driver.FindElement(By.XPath("//tr[td[text()='ECKey EK7 7002500']]/td[1]/input")).Click();
driver.FindElement(By.XPath("//input[@id='j_id0:j_id12:BasicAdmin:StartDate']")).Click();       //Startdate field
attr_name = driver.FindElement(By.XPath("//td[@class='weekday todayDate']")).Text;       //Get today date
driver.FindElement(By.XPath("//td[@class='weekday todayDate']")).Click();       //Set today date
driver.FindElement(By.XPath("//input[@id='j_id0:j_id12:BasicAdmin:StopDate']")).Click();       //Enddate field
el = driver.FindElement(By.XPath("//select[@title='Year']"));     //Select Year
select = new SelectElement(el);
select.SelectByText("2015");     //Select 2015
driver.FindElement(By.XPath("//td[contains(@class, 'weekday') and text() = '" + attr_name + "']")).Click();     //Choose today Date
driver.FindElement(By.XPath("//input[@value='Issue']")).Click();            //Второй клик. Он должен вызвать Alert. 


Я могу для убедительности записать видеоролик и скинуть его...

 

Вы попробуйте в хроме (в тесте клик закомментируте, поставьте слип банально) сами кликнуть по кнопке, посмотрите на реакцию. Вполне может быть проблема в приложении.

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

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

 

При этом проблема остается. И в GC не проходит код, который в FF исправно работает.
На stackoverflow я находил подобные проблемы, но там подходящего и понятного решения для себя я не смог найти. Поэтому, я и написал сюда.


  • 0

:smile:


#13 barancev

barancev

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

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


Отправлено 24 сентября 2014 - 11:18

Если страница не в общем доступе -- можно сделать упрощённую страницу и выложить в общий доступ.

Для конструирования примеров отлично подходит сервис http://jsfiddle.net/

Вполне возможно, что это баг в Selenium. Но чтобы его исправить -- надо его как минимум воспроизвести.


  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#14 mazik7

mazik7

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

  • Members
  • Pip
  • 63 сообщений
  • ФИО:Мазик
  • Город:Красноярск

Отправлено 24 сентября 2014 - 11:28

Если страница не в общем доступе -- можно сделать упрощённую страницу и выложить в общий доступ.

Для конструирования примеров отлично подходит сервис http://jsfiddle.net/

Вполне возможно, что это баг в Selenium. Но чтобы его исправить -- надо его как минимум воспроизвести.

Хорошо. Попробую воспользоваться этим сервисом. После чего выложу страницу сюда.

Мануалы какие есть по пользованию сервисом?

На счет воспроизведения не спорю, но тут я точно не имею права ничего публиковать - заказчикам это явно не понравится)


  • 0

:smile:


#15 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 833 сообщений


Отправлено 24 сентября 2014 - 11:28

А по мне так там на странице могут ещё несколько кнопок подпадать под локатор "//input[@value='Issue']"

B ФФ чисто случайно кликает по нужной, а хром кликает по другой.


  • 0

#16 mazik7

mazik7

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

  • Members
  • Pip
  • 63 сообщений
  • ФИО:Мазик
  • Город:Красноярск

Отправлено 24 сентября 2014 - 11:34

А по мне так там на странице могут ещё несколько кнопок подпадать под локатор "//input[@value='Issue']"

B ФФ чисто случайно кликает по нужной, а хром кликает по другой.

Нет проблем, я поменяю идентификатор на //div[@class='vizpin_button']/input во всех методах, и я буду очень рад, если я окажусь неправ)))


  • 0

:smile:


#17 mazik7

mazik7

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

  • Members
  • Pip
  • 63 сообщений
  • ФИО:Мазик
  • Город:Красноярск

Отправлено 24 сентября 2014 - 11:41

Не работает.все абсолютно то же самое. Кнопка выдачи одна, хотя на всякий я это проверил. Ну а блок этот точно уникален.


  • 0

:smile:


#18 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 833 сообщений


Отправлено 24 сентября 2014 - 13:18

Ну и ещё один момент - хром слишком быстро обновляет страницу, что кнопка ещё не успевает "нормально" прогрузится, а вы на неё кликаете.

Попробуйте банально поставить слип перед кликом. А там ясно будет.


  • 0

#19 mazik7

mazik7

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

  • Members
  • Pip
  • 63 сообщений
  • ФИО:Мазик
  • Город:Красноярск

Отправлено 25 сентября 2014 - 01:54

Ну и ещё один момент - хром слишком быстро обновляет страницу, что кнопка ещё не успевает "нормально" прогрузится, а вы на неё кликаете.

Попробуйте банально поставить слип перед кликом. А там ясно будет.

Стоп. И зачем я это вообще проверял (Похоже еще сплю)?) После обновления у меня еще куча действий происходит. А я вставил в код еще и Sleep) Но, нет - это тоже не помогло.


  • 0

:smile:


#20 mazik7

mazik7

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

  • Members
  • Pip
  • 63 сообщений
  • ФИО:Мазик
  • Город:Красноярск

Отправлено 27 сентября 2014 - 02:41

Я решил проблему следующим способом:

Заменил

driver.FindElement(By.XPath("//div[@class='vizpin_button']/input")).Click(); 

на

Actions builder = new Actions(driver);
el = driver.FindElement(By.XPath("//div[@class='vizpin_button']/input"));
builder.MoveToElement(el).Click().Build().Perform(); 

Кто-нибудь может сказать почему так все заработало?)


  • 0

:smile:




Темы с аналогичным тегами Google Chrome, C#, web driver 2.43.1

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

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