[FreeWare] Selenium.

Как всегда внесу некоторую сумятицу в наши ряды...
А особенно в ряды любителей ХЕ ;)



Прошу обратить внимание на год и стоимость программы... ;)
 
Как всегда внесу некоторую сумятицу в наши ряды...
А особенно в ряды любителей ХЕ ;)

*** скрытое содержание ***

Прошу обратить внимание на год и стоимость программы... ;)
Эх, жаль что в 2003-2005 я про эти проги не знал, когда был озадачен поиском.:nezn:
 
Кто-то решил проблему с тем, что когда отправляеш большие тексты, Selenium выдает предупреждение:
null null null HttpException(414,Request URI Too Large,null)
И ничего не постит.

Суть проблемы я понимаю... Там запросы через Get идут, и понятно что урл слишком большой выходит. Есть примеры исправление бага для perl, ruby, python... но что-то они не особо хотят в php работать... :confused:
 
В пакете Testing Selenium переписать doCommand под POST:

PHP:
protected function doCommandc($verb, $args = array())
    {
        $url = sprintf('http://%s:%s/selenium-server/driver/', $this->host, $this->port);
        for ($i = 0; $i < count($args); $i++) {
            $argNum = strval($i + 1);
            $postargs[] = sprintf('%s=%s', $argNum, urlencode(trim($args[$i])));
        }
		$postargs[] = 'cmd='.urlencode($verb);
        if (isset($this->sessionId)) {
            $postargs[] = sprintf('%s=%s', 'sessionId', $this->sessionId);
        }

        $c=curl_init($url);
		curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
		curl_setopt($c, CURLOPT_POST, true);
		curl_setopt($c, CURLOPT_POSTFIELDS, implode('&', $postargs));
	    $response = curl_exec($c);

        if (!$response) {
            throw new Testing_Selenium_Exception('Cannot connected to Selenium RC Server');
        }
        
        return $response;
    }
Где-то так...
 
Спасибо за код... несомненно будет полезен при дальнейших работах :)

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

В связи с этим пришлось копать дальше в сторону Get запросов. Был невнимателен, когда впервые читал исходники для исправления бага для других языков.... перечитал, дошло.

Суть решения - делим нужный нам текст на куски по "до 1000 символов", и отсылаем по очереди с помощью javascript.

Нужно заменить соответствующию функцию в Selenium.php.
PHP:
    public function type($locator, $value)
    {
            $maxChars = 1000;
            $valLen = mb_strlen($value);
            if ($valLen > $maxChars) {
                $pos = 0;
                while ($pos < $valLen) {
                    $chunk = mb_substr($value, $pos, $maxChars);
                    $chunk = str_replace('"', '\"', $chunk);
                    $chunk = str_replace("\n","\"+\n\"", $chunk);
                    $pos += $maxChars;
                    $jSCall = sprintf("selenium.browserbot.findElement(\"%s\").value += \"%s\";", $locator, $chunk);
                    $this->doCommand("getEval", array($jSCall) );
                    sleep(2);
                }
            }
            else {
                $this->doCommand("type", array($locator, $value));
            }
    }
п.с. Есть правда проблема... mb_substr почему-то иногда режет символ на две части... и выходит что-то вроде:
 
он вызывал какие-то непонятки с кодировкой... К примеру на "Вход" я не смог нажать, как только не перекодировывал... хз, может рес был специфический, хотя с стандартными настройками заходит.
C русскими ресурсами работать не приходилось. Попробуй ориентироваться не по тексту на кнопках а по ID или пути DOM.
 
а с диалог боксами работает ?

я юзаю Watin - но там нет поддержки диалог боксов
 
а с диалог боксами работает ?

я юзаю Watin - но там нет поддержки диалог боксов

Если ты имеешь ввиду явовский MessageBox - то да, хотя и с переменным успехом.
 
Для того, чтобы побороть MassageBox разнообразные в Watir мы юзаем AutoIT. Уверен, что если покурить доки то возможно она и для Selenium может применяться.

P.S.
Watir - для ruby
Watin - для .NET
Watij - для Java

и так далее. Вообще, Watir и Selenium - братья и разработчики делятся постоянно друг с другом наработками.
 
Назад
Сверху