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

Публикации leipreachan

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



#126954 Запуска Selenium'a из сайта или есть готовые framework?

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

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

Он для любого языка

ищите по ключевым словам Continious Integration server

их много - teamcity, jenkins, hudson, travis и другие.

 

 

Специализированное решение для запуска именно селениум-тестов было, но уже, насколько помню, не поддерживается.

 

вот, например, "на почитать"

http://www.browserst...ous-integration




#126955 Обход StaleElementReferenceError: el is not attached в js

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

 

Если "исключение не перехватывается" это либо ошибка в Java (что маловероятно :)), либо ошибка в Вашем коде -- скорее всего исключение возникает не там, где Вы его пытаетесь перехватывать. Покажите полный stacktrace, может быть это добавит ясности, где оно возникает.

Потерзал наших java скриптеров и они ответили то же что и вы :) ('скорее всего исключение возникает не там, где Вы его пытаетесь перехватывать').

error нужно перехватывать в error callback -e:

driver.wait(function() {
        return driver.findElement(target).click().then(
            function(click) { return true },
            function(err)   { return false }
        );
}, 10000);

В порядке эксперимента разделите получение элемента (где и вылетает это исключение) от клика по нему. Оберните в try{} catch {} именно findElement.

 

кстати, элемент у вас, случайно, не двигается во время клика?




#126960 Запуска Selenium'a из сайта или есть готовые framework?

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

Sauce Labsи Nerrvana - по функциональности подобное им, но чтобы я мог установить на свой хост

 

Вам для этого ещё свою серверную стойку надо будет завести.




#126983 Запуска Selenium'a из сайта или есть готовые framework?

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

 

 

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


 

 

Специализированное решение для запуска именно селениум-тестов было, но уже, насколько помню, не поддерживается.


 

Дайте,пожалйста, ссылку на сие творение ?

 

 

еле нашёл о нем упоминание

 

http://www.methodsan...ols.php?bromine

 

 

(искать тут http://web.archive.o...q.org/projects)

 

вообще, потом, похоже, его идеи фукидид (thucydides) перехватил.




#126990 Передача значения переменой a функцию

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

 

Нечего в sendKeys интеджер пхать :-)

:rofl:

А слона-то я и не приметил.

Вообще странно, IDE обычно пишет чёрным по-жёлтому:

140213_17645dda.png

Перевод: метод sendKeys(CharSequence...) у типа WebElement не поддерживает аргументы (int)

 

Я думал, там какой-то Exception вываливается.

 

Топик-стартеру:

Решение элементарно

void log_out2(int num) throws Exception
{
	//////////*************///////////////////////
	driver.findElement(By.id("username")).clear();
	driver.findElement(By.id("username")).sendKeys("" + num);
	//////////**************///////////////////
 
}

 

driver.findElement(By.id("username")).sendKeys("" + num);

так нельзя делать, ай-ай-ай!!!

if (num!=null) {

 driver.findElement(By.id("username")).sendKeys(num.toString());

}




#127093 Передача значения переменой a функцию

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

 

driver.findElement(By.id("username")).sendKeys("" + num);

так нельзя делать, ай-ай-ай!!!

if (num!=null) {

 driver.findElement(By.id("username")).sendKeys(num.toString());

}

 

num не может быть равен null, потому что num объявлен как int - это не объект, а примитивный тип.

Если бы num был объявлен как объект Integer, тогда проверка на null нужна обязательно.

 

А вот Ваш код должен выдать ошибку IDE:

140213_17cd0479.png

 

 

 

вы правы насчёт ошибки IDE (пару лет уже на java не писал), общий смысл был в использовании toString() =)

 

Использовать конструкцию ""+int  не принято, т.к. такой код "плохо пахнет" =)




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

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

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

<select/>

или

<ul><li /> </ul>

?

 

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




#127124 Запуска Selenium'a из сайта или есть готовые framework?

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

Так это виртуалки. А где дистрибы ?

Уважаемый, это уже вам следует искать в google.com




#127125 Обход StaleElementReferenceError: el is not attached в js

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

 

В порядке эксперимента разделите получение элемента (где и вылетает это исключение) от клика по нему. Оберните в try{} catch {} именно findElement.

 

кстати, элемент у вас, случайно, не двигается во время клика?

 

 

Вылетало именно при попытке .click(), елемент передобавлялся в DOM из за чего и вылетала ошибка.

try...catch не подходит для ассинхронного кода. Ошибка приходит именно в этот error callback , function(err) где мы и обрабатываем полученную ошибку.

 

Сейчас в этом коде при любой ошибке просто возвращаеться false в wait и wait пытается еще раз попробовать найти елемент и сделать клик.

 

 

Можно написать как то так, что бы перехватывать именно нужную ошибку.

    driver.wait(function() {
        return driver.findElement(target).click().then(
            function(click) { return true },
            function(err) { 
                if (err = StaleElementReferenceError) {
                    return false;
                } else {
                    throw err;
                }
            }
        );
    }, 10000);

 

 

ээ

для асинхронного - не подходит, но ведь findElement и click должны выполняться последовательно.   а, понял о чём вы. wait асинхронный.

 

Вы написали именно то, что я и имел в виду. Более удобного способа обходить StaleElementException я не знаю.




#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.

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




#127207 Запуска Selenium'a из сайта или есть готовые framework?

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

Для нашей команды в teamcity я настроил билды с возможностью указание группы тестов (указывается в аннотации). Так получается более гибко, чем VisualPHPUnit. Последний подходит в том случае, если команда оч. небольшая и нет вероятности, что кто-то забьёт селениум-ферму.  К тому же, отсутствуют стандартные плюшки всех CI-серверов (статистика и т.п.)




#127246 Обновление DOM

Отправлено автор: leipreachan 19 февраля 2014 - 11:41 в Selenium - Functional Testing

Подскажите, пожалуйста, как обновить DOM, без перезагрузки страницы, при помощи Selenium?

начнём с начала - а вам для чего?




#127248 Selenium + PHP + ?

Отправлено автор: leipreachan 19 февраля 2014 - 11:46 в Selenium - Functional Testing

Хотелось бы узнать сколько людей юзает такую связку? У скольких  все тесты запускаются, без долгого мозгоё..тва? Как по мне, пока php официально не будет поддерживаться Selenium, писать тесты в такой связке точно не в удовольствие, а тем более для начинающих автоматизаторов. Большинство новичков привлекает эта связка только потому что php легок в обучении...

 

 

В чем проблема лично у вас при написании тестов на php? (если в компании всё пишется на php)

Что вам нужно от официальной поддержки? Биндинги? JsonWired protocol - это официально поддерживаемая часть Selenium.

А из компаний, который используют php + selenium я вам назову, например, Facebook




#127276 Обновление DOM

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

Вопрос решен.

Всплывающее окно оказалось просто новым элемент в HTML-тэге исходной страницы.

Для обращения к элементу появившегося окна необходимо выполнить (XPath изменен на корректный):

time.sleep(10)
driver.find_element_by_xpath("//div[@class='nameId']/div[@sbisname='Ok']/div").click();

За решение спасибо Petrov.Sergey

 

тогда я искренне вам рекомендую подучить терминологию.

Всплывающее окно - это новое окно браузера. Вы говорили о каком-то popup, реализованном через вёрстку :)




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

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

barancev

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

 

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




#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




#127450 Selenium+PHPUnit свежая документация

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

phpunit.de




#127501 Selenium+PHPUnit как обращаться к своему курсору мыши из селениума

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

Если в коде был изменён курсор мыши на свой, то как к нему обращаться из селениума?
attachicon.gifcursor.png

через javascript




#127586 Selenium+PHPUnit как обращаться к своему курсору мыши из селениума

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

 

 

вот мне нужно реализовать такую команду

dragAndDropToObject ( locatorOfObjectToBeDragged,locatorOfDragDestinationObject ) 
можете пример привести как конкретно, потому что при наведении на ту форму мышью, её курсор изменён на свой?

 

А какая разница, как выглядит курсор мыши? В смысле, как, по-вашему, зависят действия:
1) найти первый объект по локатору
2) найти второй объект по локатору
3) схватить мышью первый объект
4) переместить курсор мыши на второй объект
5) отпустить мышь
от формы курсора мыши?

Вообще, форма курсора мыши - лишь визуализация. Сама "мышь" в понимании ОС - это точка, бегающая по экрану.

P.S. А Вы в курсе, что при наведении мышки на кнопку курсор один, при наведении мышки на ссылку курсор другой, а просто так курсор может быть третьим? И как в таком случае кликать по ссылкам и кнопочкам - проблемы возникают?

 

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

 

 

1) мы тут не телепаты :) мы не видим, что кроется под вашей фразой "не получается просто так взять и схватить объект и перетащить". Что получается? какие JS ошибки? Что говорит selenium RC по этому поводу? Пробовали то же самое на Webdriver сделать? А какой браузер? А какая версия?

2) С листбоксом отдельный вопрос. Что это? html-элемент select? или что-то своё, внутрипроектное?

 

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




#127627 Selenium ест 1 гиг памяти и вылетает

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

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




#127628 Selenium RC + PHPUnit. Создание нового окна

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

Возникла с открытием нового окна.

Если я нахожусь на сайте с https, то команда

$this->openWindow('http://primer.ru', 'primer');
$this->selectWindow('primer');

выдает ошибка, что окна "primer" не существует. Хотя я вижу, что оно открыто. Таймауты не помогают. Также я пробовала выводить список открытых окон. Окна "primer" в этом списке не было, будто оно и не открывалось.

 

Как можно обойти это?

 

Более правильно будет:

$this->selectWindow('name=primer');

насколько я помню, openWindow именно имя окна задаёт




#127681 Selenium RC + PHPUnit. Создание нового окна

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

 

 

Возникла с открытием нового окна.

Если я нахожусь на сайте с https, то команда

$this->openWindow('http://primer.ru', 'primer');
$this->selectWindow('primer');

выдает ошибка, что окна "primer" не существует. Хотя я вижу, что оно открыто. Таймауты не помогают. Также я пробовала выводить список открытых окон. Окна "primer" в этом списке не было, будто оно и не открывалось.

 

Как можно обойти это?

 

Более правильно будет:

$this->selectWindow('name=primer');

насколько я помню, openWindow именно имя окна задаёт

 

Нет, он именно окно создает с именем "primer". 

Но тут казус. Он вроде бы его создает, я его вижу открытым. НО! Сам селениум его не видит. Говорит, что нет такого окна, как бы я его не искала

 

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

если вы используете Selenium RC,  а не webdriver, то selectWindow предполагает в качестве аргумента локатор в виде:

title=заголовок_окна

name=название_окна

var=переменная_окна

 

openWindow, насколько мне не изменяет память, создаёт именно окно с имененм, которое вы указываете вторым аргументом

 

тут вот: http://release.selen...va.lang.String)

ссылка на старое API для java. Но оно на 99% повторяет API для php, особенно в плане формата данных, попадающих на сервер. Так что попробуйте, всё-таки,

$this->selectWindow('name=primer');




#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




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

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

 

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

 

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

 

 

не работает. Идентификация не запоминается.

 

а вот за наводку что такое и как использовать browserproxymob или, лучше даже, пример использования, буду очень признателен.

 

 

https://github.com/l...rowsermob-proxy

удобнее всего использовать в java, но можно и в других языках (правда,тогда не весь функционал раскрывается).

Это прокси-сервер, который может подменять заголовки




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

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

 

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

 

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

 

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

 

 

 

 

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