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

Публикации leipreachan

94 публикаций создано leipreachan (учитываются публикации только с 27 сентября 2023)



#127123 Не выбирается елемент из dropdown -а при использовании Firefox driver

Отправлено автор: leipreachan 17 февраля 2014 - 07:48 в Selenium - Functional Testing

Погодите, у вас там

<select/>

или

<ul><li /> </ul>

?

 

Нет ли там хитрости с наведением, фокусировкой, магией JS с навешиванием обработчиков?




#127176 Не выбирается елемент из dropdown -а при использовании Firefox driver

Отправлено автор: leipreachan 18 февраля 2014 - 09:01 в Selenium - Functional Testing

 

Погодите, у вас там

<select/>

или

<ul><li /> </ul>

?

 

Нет ли там хитрости с наведением, фокусировкой, магией JS с навешиванием обработчиков?

<ul><li /> </ul> , магия JS присутствует у нас в компании повсеместно ;) ; возможно что то из того что вы описали присутствует...сейчас не могу сказать с уверенностью.

Но когда Firefox driver кликает по нему, анимация наведения на элемент отсутствует.

 

 

вероятно, у вас событие как-то не так обрабатывается. Либо onMouseOver, либо click

рекомендую прямо в JS-коде влепить отладочные сообщение и во время выполения теста посмотреть, что там всё-таки происходит

как второй вариант - попробуйте кликать (или вызывать mouseOver) по элементу прямо через JS.

Лично мне это помогает найти тот элемент, который "ведёт себя не так".




#124418 Кто как борется со "смертью" браузера

Отправлено автор: leipreachan 27 ноября 2013 - 11:22 в Selenium - Functional Testing

после обновления на последнии версии всего симптомы остались, но теперь вместо "It may have died..." появляется no such element. Эту ошибку убрали? Теперь непонятно возникла ошибка или же это лажа с тестами


Может быть, это Stalled element?
Т.е. у вас DOM перерисовался и браузер потерял ссылку на этот элемент? Браузер-то при этой ошибке ещё живой?



#124498 Кто как борется со "смертью" браузера

Отправлено автор: leipreachan 28 ноября 2013 - 13:46 в Selenium - Functional Testing

мм, об этом я забыл...
Я удалил прошлый лог файл, а новых фейлов не было и он не создался..

ну, тогда не забудьте туда глянуть в следующий раз.



#124487 Кто как борется со "смертью" браузера

Отправлено автор: leipreachan 28 ноября 2013 - 11:43 в Selenium - Functional Testing

я посмотрю, но там 90% элементов статичны и не меняются

попробуйте обернуть в try{}catch() ожидание элемента с небольшой задержкой, а всё это - в цикл. Если это stalled element, то проблема решится.
к тому же, вы уверены, что абсолютно ничего нет в логах ни драйвера, ни selenium-server? иногда там интересные вещи показыаются..



#128346 Удержание фокуса на элементе

Отправлено автор: leipreachan 18 марта 2014 - 07:19 в Selenium - Functional Testing

Здравствуйте,

 

возникла следующая проблема. Имеется в наличии много тестов, разных веб-приложений, которые запускаются автоматически при изменениях в системе (для этих целей используем Jenkins). К сожалению случается, что запускаются 2 теста в одно и то же время на одной и той же машине. И эти тесты друг у друга то и дело крадут фокус. Все бы ничего, но в наличие есть тесты, где при потере фокуса происходит к/л событие (где-то javascript, где-то ajax), из-за которого тест не проходит.

Не сталкивался ли кто с такой проблемой? И как она решается? К сожалению, распределить тесты полностью так, чтобы они бежали в разное время или на разных машинах, нет возможности.

 

Запускайте на разных машинах =)

или на одной, но используйте xvfb, если под линуксом.

Второй вариант: "исправлять" JS, чтобы элементы не реагировали на смену фокуса.




#128351 Удержание фокуса на элементе

Отправлено автор: leipreachan 18 марта 2014 - 11:09 в Selenium - Functional Testing

leipreachan, cпасибо за ответ.

Тесты у нас на 4х машинах, все под линуксом. Но, к сожалению, тестов намного больше.

Инетересует именно к/л возможность удерживать фокус при помощи кода. Или единственный способ прямо "жестким" способом залазить в DOM страницы? Или, на крайний случай, может быть есть какая-то логика в том когда фокус перескакивает с теста на тест (пока мне кажется, что это происходит случайным образом)? 

 

Используйте XVFB, если у вас всё под линуксом. Поднимите больше selenium-серверов и каждый с одним инстансом браузера

 

Логика переключения простая - каждое действие (кроме ожидания элемента) приводит к потере фокуса остальными окнами. С точки зрения OS невозможно держать два окна одновременно в фокусе =)




#125003 Изменение профиля в процессе работы.

Отправлено автор: leipreachan 12 декабря 2013 - 07:34 в Selenium - Functional Testing



Добрый день, уважаемые!
Подскажите, пожалуйста, возможно ли изменение параметров загруженного профиля ФФ уже в процессе работы? То есть браузер запустился с одним профилем, а в потом, в процессе, потребовалось его изменить. Возможен ли такой маневр?

Нет, так сделать нельзя. А для чего вам понадобилось менять профиль во время работы? Какую проблему вы хотите решить таким способом?


Понимаю, что, наверное, этот вопрос прозвучал немного странно.
Попробую вкратце объяснить. Пользуюсь Python и FireFox
В Селениум Вебдрайвере есть такой момент, что после get, click, refresh - он ждет загрузки страницы и ни на что при этом не реагирует боле, пока не загрузит. Выйти из этого процесса можно установив set_page_load_timeout. Но! встречаются такие моменты (после click, например иногда) когда Селениум не понимает, что произошел тот самый клик и надо ждать загрузки страницы. При этом программа выполняется дальше, но при любом обращении к вебдрайверу происходит остановка и ожидание загрузки страницы. Но страница, бывает так, что вообще не загружается и висит, а в данной ситуации уже таймаут на загрузку страницы не срабатывает. В итоге получаем полное зависание.
Против всего этого непотребства нашел один вариант - использовать хитрую загрузку профиля с set_preference('webdriver.load.strategy','unstable'). Тогда, в общем-то, загрузку страницы можно не ждать, а сразу проверять наличие элементов на странице и работать с ними при появлении. Но и в этом варианте есть свои подводные камни - Например, когда обновляешь страницу, ищешь элементы, находишь их, но находишь их на СТАРОЙ странице, которая еще не обновилась, то есть ты не знаешь с какой страницы нашел элемент со старой, или с уже новой, так как не знаешь загрузилась ли уже страница. По крайней мере, я не нашел способа проверки загрузилась ли уже страница в этом режиме. Может кто-нить знает способ?
Вот я и подумал, что может быть можно было б менять в процессе работы этот параметр, чтобы, когда надо работать в "нестабильном" режиме, а когда надо - в нормальном

Вот... Сумбурно получилось :) Надеюсь, Вы что-нибудь поняли из моего потока сознания :)
Или я сам все усложняю и есть нормальные способы решения?



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



#124975 Изменение профиля в процессе работы.

Отправлено автор: leipreachan 11 декабря 2013 - 08:37 в Selenium - Functional Testing

Добрый день, уважаемые!
Подскажите, пожалуйста, возможно ли изменение параметров загруженного профиля ФФ уже в процессе работы? То есть браузер запустился с одним профилем, а в потом, в процессе, потребовалось его изменить. Возможен ли такой маневр?

эээ.. а у живого пользователя как это планируется делать? через about:config?
пожалуй, проще всего будет перекинуть сессию на новый браузер (скопировать куки, например)



#125035 Изменение профиля в процессе работы.

Отправлено автор: leipreachan 13 декабря 2013 - 07:38 в Selenium - Functional Testing


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

Все так, за исключением одного "но". Приведу пример, чтоб понятней было:
Есть страница с капчей. я ввожу капчу и начинаю анализировать появилась ли следующая страница по появлению соответствующих элементов.
Но! Капчу можно решить неправильно и загружается не новая, а та же самая страница с капчей. И вот, все в шоке :)
Приходится еще и мониторить не появились ли те же элементы, что и на странице капчи. То есть, например, будем отслеживать - не появилась ли опять капча. Все бы хорошо, но вступает в силу очередной закон подлости :)
Прикол в том, что когда начинает грузиться страница, то старая еще не пропала, а некоторое время еще висит и Селениум может, как ни странно, с этой страницей работать. И как результат, он находит капчу, но не новую, а старую, и считает, что... да что угодно считает, но считает он это неправильно.
Это только лишь один из примеров тупиковых ситуаций.
Да, кстати, в цикле пробовал анализировать не пропал ли элемент (в нашем случае капча) в промежутке между сменами страниц и только потом запускать процедуру анализа какая страница загрузилась. Но и тут очередной прикол. Иногда, следующая страница появляется практически без паузы. То есть висит еще видимая старая, при этом грузится новая в фоне.. и в какой-то момент бах! - и отрисовалась новая. И Селениум не успевает отследить пропадание, и мы повисаем в бесконечном цикле. Ну, конечно, не бесконечном - из него выходим по прошествии какого-то времени, но все это время мы висим и гоняем впустую процессорное время :)


по пунктам:
1) страница с капчей не выдаёт сообщение "вы неправильно ввели капчу"? Это странно. Если выдаёт - можете на это ориентироваться. Если не выдаёт - следует подумать над этим, т.к. я бы сам удивился, если бы мне ничего не говорили, а просто перезагружали страницу.
2) Ориентируйтесь на src картинки с капчей. Перед вводом значения запоминайте её id, что угодно (обычно у неё адрес что-то вроде captcha.php?id=dkfjgkjdshf). Потом проверяйте, что он изменился. Или у вас капча имеет вид captcha.php ?
3) Если уж совсем туго, можете воспользоваться JS: добавляйте через document.body.addChildren какой-нибудь невидимый input type="hidden". Наверное, даже, его лучше прибавлять к футеру. Как только он исчезнет - страница начала перезагрузку.
4) Да, анализ "исчезновение - появление" может быть забагованным. Им пользоваться нужно оочень осторожно. Хороший JS-код может поменять DOM страницы достаточно быстро и селениум ничего не может с этим поделать.
тупиковых ситуаций не бывает =)

В firebug (и в стандартных девтулз Firefox) есть инструмент, который позволяет подсветить изменившиеся элементы. Попробуйте посмотреть, где происходят изменения.



#125041 Изменение профиля в процессе работы.

Отправлено автор: leipreachan 13 декабря 2013 - 08:48 в Selenium - Functional Testing


по пунктам:
1) страница с капчей не выдаёт сообщение "вы неправильно ввели капчу"? Это странно. Если выдаёт - можете на это ориентироваться. Если не выдаёт - следует подумать над этим, т.к. я бы сам удивился, если бы мне ничего не говорили, а просто перезагружали страницу.
2) Ориентируйтесь на src картинки с капчей. Перед вводом значения запоминайте её id, что угодно (обычно у неё адрес что-то вроде captcha.php?id=dkfjgkjdshf). Потом проверяйте, что он изменился. Или у вас капча имеет вид captcha.php ?
3) Если уж совсем туго, можете воспользоваться JS: добавляйте через document.body.addChildren какой-нибудь невидимый input type="hidden". Наверное, даже, его лучше прибавлять к футеру. Как только он исчезнет - страница начала перезагрузку.
4) Да, анализ "исчезновение - появление" может быть забагованным. Им пользоваться нужно оочень осторожно. Хороший JS-код может поменять DOM страницы достаточно быстро и селениум ничего не может с этим поделать.
тупиковых ситуаций не бывает =)

В firebug (и в стандартных девтулз Firefox) есть инструмент, который позволяет подсветить изменившиеся элементы. Попробуйте посмотреть, где происходят изменения.


1. Выдает. Но можно ж ввести капчу и два и три раза неправильно, поэтому и это поле потом не меняется. Хотя там такой сайт, что чего угодно можно ждать :) Может и начальная страница подгрузиться внезапно :)
2. А вот за этот вариант большое спасибо! Что-то в голову не пришло сразу, что источник меняться может.
3. Интересная мысль, если будет туго - опробую :) Спасибо.

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



сравнивать картинки - вполне себе решение, я его приберёг для следующего ответа, вы сами до него раньше добрались =)

1. Да, но тогда поле со значением капчи у вас сброситься должно. Кука измениться должна. Да что угодно =)



#124488 Автотестирование установки плагина в браузер

Отправлено автор: leipreachan 28 ноября 2013 - 11:50 в Selenium - Functional Testing

Управление расширения браузера никак не реализовано в Selenium, т.к. это не его задача.
Его задача - эмуляция работы пользователя на каком-нибудь сайте.
Посмотрите в сторону роботов (autoit, например. Под маком слышал про Automator)



#127302 Разрыв соединения с сервером

Отправлено автор: leipreachan 20 февраля 2014 - 13:15 в Selenium - Functional Testing

barancev

Не помогает. У меня предполагается 100000 запросов. Сначала сервер позволил сделать примерно 2000 запросов, затем 400, теперь каждые 200 запросов рвется соединение.

 

bash-скрипт + curl, вот ваше решение. Не нужен вам Селениум, скорее всего




#128909 Selenium+PHPUnit: как одновременно запустить тест параллельно в разных

Отправлено автор: leipreachan 01 апреля 2014 - 15:08 в Selenium - Functional Testing

Не, Леприкон, тут другое, один тест одновременно на разных браузерах, хотя, вопрос сомнителен...

А там простое параллельное исполнение разных тестов.

для java это можно сделать через dataprovider (т.к. параллелить там проще), в пыхе - через кастомный скрипт. Вроде бы соус лаб как раз в скрипте и оставлял лазейку для опций. Но вы правы, вопрос незначительно отличается. Окей




#128904 Selenium+PHPUnit: как одновременно запустить тест параллельно в разных

Отправлено автор: leipreachan 01 апреля 2014 - 14:46 в Selenium - Functional Testing

 

Дайте угадаю, а браузеров должно быть очень (т.е. под сотню - две) много?

Один тест и разные браузеры googlechrome, ie, firefox

 

вы это уже третий или четвёртый раз спрашиваете, серьёзно.

Вам же дали даже пример кода на PHP, как это реализуется в sauce labs




#129044 Репортинг для WebDriver-тестов и не только

Отправлено автор: leipreachan 03 апреля 2014 - 15:43 в Selenium - Functional Testing

тысячи их, а конкретно - это CI-системы. TeamCity, Jenkins, Bamboo, Travis, Cruisecontrol, Hudson и т.п.

Если вам нужно специально под Selenium - тогда либо нужна доработка в вашем фреймворке, либо специальный плагин для CI-сервера.




#127413 [Selenium+PHPUnit]

Отправлено автор: leipreachan 24 февраля 2014 - 10:40 в Selenium - Functional Testing

<?php
class Example extends PHPUnit_Extensions_SeleniumTestCase
{
  protected function setUp()
  {
    $this->setBrowser('firefox');
    $this->setBrowserUrl("https://www.google.ru/");
  }

  public function testMyTestCase()
  {
    $this->open("/");
    $this->type("id=gbqfq", "hello");
    $this->click("id=gbqfb");
    $this->waitForPageToLoad("10000");
    $this->click("id=hdtb_tls");
  }
}
?>

Почему то на строке

$this->waitForPageToLoad("10000");

выдаёт ошибку

 

E

Time: 18.26 seconds, Memory: 2.50Mb

There was 1 error:

1) Example::testMyTestCase

Invalid response while accessing the Selenium Server at 'http://localhost:4444/s
elenium-server/driver/': Timed out after 10000ms

C:\Users\tester\Downloads\php-webdriver-master\name.php:15
C:\Users\tester\Downloads\php-webdriver-master\name.php:15

Caused by
RuntimeException: Invalid response while accessing the Selenium Server at 'http:
//localhost:4444/selenium-server/driver/': Timed out after 10000ms

C:\Users\tester\Downloads\php-webdriver-master\name.php:15
C:\Users\tester\Downloads\php-webdriver-master\name.php:15

FAILURES!
Tests: 1, Assertions: 0, Errors: 1.
 

 

хотя страница уже загрузилась.
Почему не может выполнить следующую строку ?

 

 

последуйте советам выше, а ещё даже не начинайте писать тесты с использованием selenium RC, пишите сразу на Webdriver.

 

для этого начните использовать PHPUnit_Extensions_Selenium2TestCase, а не Selenium




#128269 PHPUnit + Selenium Grid: Какой должен быть шаблон теста чтобы запускат

Отправлено автор: leipreachan 14 марта 2014 - 11:02 в Selenium - Functional Testing

В описании обещали

-browser < params > Если параметр -browser не задан, узел запустится с пятью экземплярами Firefox, пятью Chrome и одним Internet Explorer (предполагается, что это Windows-машина). Для задания различных типов браузеров можно несколько раз указать этот параметр в одной строке.

да, он именно такое количество сессий будет обслуживать

не путайте "возможность обслужить" selenium-ом и то, как вы тесты будете запускать.




#128195 PHPUnit + Selenium Grid: Какой должен быть шаблон теста чтобы запускат

Отправлено автор: leipreachan 13 марта 2014 - 08:34 в Selenium - Functional Testing

а как тест должен выглядеть сам, который выполняется одновременно в нескольких браузерах ?

 

формально, любой тест можно запустить на любом браузере. если ваше приложение работает одинаково во всех браузерах, то он и проходить везде будет.




#128144 PHPUnit + Selenium Grid: Какой должен быть шаблон теста чтобы запускат

Отправлено автор: leipreachan 12 марта 2014 - 14:28 в Selenium - Functional Testing

Использую Selenium Grid с PHPUnit. Подскажите, какой должен быть шаблон теста, чтобы одновременно запускать несколько тестов ?

поясните, что вы имеете в виду? какой шаблон теста?

в чём проблема запускать несколько тестов?




#128189 PHPUnit + Selenium Grid: Какой должен быть шаблон теста чтобы запускат

Отправлено автор: leipreachan 13 марта 2014 - 08:00 в Selenium - Functional Testing

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

в phpunit реализация параллельного запуска тестов ложится на плечи разработчика, selenium и grid тут не при чём.




#128220 PHPUnit + Selenium Grid: Какой должен быть шаблон теста чтобы запускат

Отправлено автор: leipreachan 13 марта 2014 - 14:11 в Selenium - Functional Testing

Я знаю что тест будет проходить везде, но мне нужно реализовать параллельный запуск одновременно в нескольких браузерах.

запускайте четыре теста одновременно на разных браузерах.

phpunit преполагает, что вы будете делать именно так




#127852 Не работает идентификация пользователя

Отправлено автор: leipreachan 05 марта 2014 - 12:19 в Selenium - Functional Testing

Задача:

    Есть TWiki страницы. В них нужно заменить слово1 на слово2. Сделать это надо на стороне клиента т.е. через web форму.

 

Проблема:

    Когда работаю без селениума в браузере, он меня помнит и, даже, если не помнит, то достаточно вести данные один раз, и тогда запоминает. При работе через селениум не хочет запоминать и на каждой странице запрашивает идентификационные данные.

 

Открываю строницу в selenium webdriver. При попытке редактировать стриницу возникает запрос на идентификацию, с которым мне не удаются работать ни через селениум ни руками (работает только <ctrl+v> <ctrl+c> и смена фокуса мышкой). Поэтому хочу открыть страницу, один раз ввести пароль руками и все страницы открывать уже будучи идентифицированным (либо научиться работать с этой формой идентификации, но как не понимаю). Но этот редиска не запоминает меня, и запрашивает идентификацию каждый раз при октрытиb новой страницы (даже в одной сессии и в одной вкладке). Как его победить?

 

 

использую selenium-2.39.0 на линуксе, работаю через firefox

 

сервера запускаю так (пытался использовать профайл не помогло. возможно что-то делаю не то):

java -jar selenium-server-standalone-2.39.0.jar -firefoxProfileTemplate /home/msedov/.mozilla/firefox/e8bw0hxb.selenium -log selenium_server.log -debug &

 

код который на сочинял на python

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import StaleElementReferenceException
import time
import pickle

browser = webdriver.Firefox()

link_list = {}
cookies_list = {}

# click edit button in the main TestGroup page
browser.get('http://server_name/twiki/bin/view/TestGroup/WebHome')
print ("Title: '"+browser.title+"'")
element_edit_button = browser.find_element_by_xpath("/html/body/div[3]/div[2]/div/div/ul/li/a/b")
#element_edit_button.click()

try:
    element_edit_button.click()
except StaleElementReferenceException:
    print ("Exception during opening")

# тут появляется идентификационная форма, с которой мне не удается работать
# ввожу данные руками, использую <ctrl+c>, <ctrl+v>

element_edit_text = browser.find_element_by_xpath('//*[@id="topic"]')
print (element_edit_text.text)

element_cancel_button = browser.find_element_by_xpath('//*[@id="cancel"]')
try:
    element_cancel_button.click()
except StaleElementReferenceException:
    print ("Exception during canceling")

дальше открываю следующую страницу и пытаюсь ее редактировать, но получаю повторный запрос на идентификацию.

Отредактировать надо большое кол-во страниц, т.е. руками это делать не вариант.

 

Что я не учитываю? Как победить этого "злого монстра"? Буду рад любой помощи.

или используйте browserproxymob, или заходите на страницу используя адрес вида

 

логин:пароль@server_name




#127900 Не работает идентификация пользователя

Отправлено автор: leipreachan 06 марта 2014 - 09:24 в Selenium - Functional Testing

 

Уважаемый, Леприкон, большая просьба - поменьше оверквотинга.

 

или используйте browserproxymob, или заходите на страницу используя адрес вида

 

логин:пароль@server_name

 

 

 

 

если форум так настроен, что не может сам схлопывать длинные цитаты - это должно стать моей проблемой? Очень странно слышать подобный коммент на форуме инженеров по качеству.




#127914 Не работает идентификация пользователя

Отправлено автор: leipreachan 06 марта 2014 - 13:37 в Selenium - Functional Testing

Уважаемый,

1) я знаю, что такое оверквоттинг и создаю его не злонамеренно, да, более того, даже не специально

2) я не нажимаю "Цитата", я нажимаю "Ответить". Вам прикрепить видеоролик с описанием проблемы?

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

А то получается сапожник без сапог какой-то.

 

вообще, я считаю, что оверквоттинг не лучше оффтопика.