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

Фотография

Selenium IDE как обновить кэш для Firefox


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

#1 frei_by

frei_by

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

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

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

Господа, подскажите как обновить кэш броузера Firefox.
встроенная функция refresh не помогает.

помогает только ctrl+F5.

Нашёл что можно симулированть controlKeyDown
нашёл что можно посылать коды

keyPress(locator, keySequence)
Arguments:

* locator - an element locator
* keySequence - Either be a string("\" followed by the numeric keycode of the key to be pressed, normally the ASCII value of that key), or a single character. For example: "w", "\119".

Simulates a user pressing and releasing a key.


если это сработает, подскажите код F5... и какой локатор стоит указать? пробовал указывать какой-нибудь div, вроде нажимало, но не на ту клавишу. писал как
controlKeyDown
keyPress //div \\116

-
сработало как ctrl + T...
  • 0

#2 vitorg

vitorg

    Опытный участник

  • Members
  • PipPipPipPip
  • 408 сообщений

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

Скорее всего через IDE этого не получится сделать. Можно через RC отправкой нативных нажатий Selenium#keyDownNative и т.п.
  • 0

#3 frei_by

frei_by

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

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

Отправлено 13 октября 2010 - 08:51

Можно через RC отправкой нативных нажатий Selenium#keyDownNative и т.п.


Подскажите плз как называетвся функция отправляющая нативные нажатия...
  • 0

#4 vitorg

vitorg

    Опытный участник

  • Members
  • PipPipPipPip
  • 408 сообщений

Отправлено 13 октября 2010 - 09:08

Именно так и называется - keyDownNative - это в Java-драйвере, есть ещё keyUpNative и keyPressNative.
  • 0

#5 frei_by

frei_by

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

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

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

нашёл в описании php клиента

keyDownNative (line 2638)
Simulates a user pressing a key (without releasing it yet) by sending a native operating system keystroke.


использую как

//нажимаем ctrl+F5
    $this->controlKeyDown();
    $this->keyDownNative(116);
    $this->controlKeyUp();

смущает только строчка

void keyDownNative (string $keycode)
string $keycode: an integer keycode number corresponding to a java.awt.event.KeyEvent; note that Java keycodes are NOT the same thing as JavaScript keycodes!


не подскажете таблицу Java кейкодов?
  • 0

#6 vitorg

vitorg

    Опытный участник

  • Members
  • PipPipPipPip
  • 408 сообщений

Отправлено 13 октября 2010 - 13:18

не подскажете таблицу Java кейкодов?

http://www.java2s.com/Open-Source/Java-Document/6.0-JDK-Modules/j2me/java/awt/event/KeyEvent.java.htm
  • 0

#7 frei_by

frei_by

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

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

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

Ну в общем решение не совсем с IDE, но у меня получилась такая вот функция:

function refresh_b ($n=3)
      {
          // 1 - refresh
          // 2 - ctrl + f5
          // 3 - refresh & ctrl + f5

      switch ( is_numeric($n) )
         {
             case ($n = 1 ): $this->refresh(); break;
             case ($n = 2 ): {
                 $this->controlKeyDown();
                 $this->keyPressNative(0x74);
                 $this->controlKeyUp();
             }break;
             case ($n = 3 ): {
                 $this->refresh();
                 $this->controlKeyDown();
                 $this->keyPressNative(0x74);
                 $this->controlKeyUp();
             }break;
         default:die('Failed to refresh;') ;
         }

keyPressNative - существует только для RC...
  • 0

#8 OVA

OVA

    Опытный участник

  • Members
  • PipPipPipPip
  • 405 сообщений
  • ФИО:Высоцкий Сергей Павлович
  • Город:Новосибирск

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

Можно как-то так, например:
String jScript_ = "" +
"Response.Cache.SetExpires(DateTime.Parse(DateTime.Now.ToString()))\n" +
"Response.Cache.SetCacheability(HttpCacheability.Private)\n" +
"Response.Cache.SetNoStore()\n" +
"Response.AppendHeader("Pragma", "no-cache")";

selenium.getEval(jScript_);

А вот для WebDriver: http://code.google.c...es/detail?id=40
  • 0

#9 frei_by

frei_by

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

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

Отправлено 18 октября 2010 - 10:48

Можно как-то так, например:
String jScript_ = "" +
"Response.Cache.SetExpires(DateTime.Parse(DateTime.Now.ToString()))\n" +
"Response.Cache.SetCacheability(HttpCacheability.Private)\n" +
"Response.Cache.SetNoStore()\n" +
"Response.AppendHeader("Pragma", "no-cache")";

selenium.getEval(jScript_);

А вот для WebDriver: http://code.google.c...es/detail?id=40


по моему работать не будет.... вы по-моему с чем-то путаете javascript, либо я что-то не понял.
Response.Cache.SetNoStore -
http://msdn.microsof...setnostore.aspx
?
  • 0

#10 OVA

OVA

    Опытный участник

  • Members
  • PipPipPipPip
  • 405 сообщений
  • ФИО:Высоцкий Сергей Павлович
  • Город:Новосибирск

Отправлено 18 октября 2010 - 14:00

по моему работать не будет.... вы по-моему с чем-то путаете javascript, либо я что-то не понял.
Response.Cache.SetNoStore -
http://msdn.microsof...setnostore.aspx
?

Ну да, это ASP. Не подходит?
В принципе можно написать батник и каждый раз из тестового скрипта дергать батник, но это как-то бе.

Если хочется js, то можно почитить примерно таким способом:
document.write('<a href="megapage.html?t=' + (new Date()).getTime() + '">A Link</a>')

Так мы грязно обманем браузер и он больше не будет брать megapage.html из кэша, потому как всегда уникальный урл, все дела.
  • 0

#11 frei_by

frei_by

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

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

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

финт ушами для кеша:

function timestamp ()
      {
         $time = date ('c');
         $time = str_replace(':','-',$time);
         return $time;
      }
...
$this->open('/?time='.timestamp());

Естественно учитывая специфику того, что тесты будут выоплнятся в обёртке PHPUNIT нужно будет правильно подключить в класс функцию...
  • 0

#12 OVA

OVA

    Опытный участник

  • Members
  • PipPipPipPip
  • 405 сообщений
  • ФИО:Высоцкий Сергей Павлович
  • Город:Новосибирск

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

Ну это практически один фиг что вставлять вот такое: document.write('<a href="megapage.html?t=' + (new Date()).getTime() + '">A Link</a>') и потом эту линку открывать.
  • 0

#13 mosketrem

mosketrem

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

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


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

Я используя такую комманду в IDE:
deleteCookie | <cookie-name> | path=/, domain=<domain-name>, recurse=true

Вроде работает
  • 0

#14 frei_by

frei_by

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

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

Отправлено 30 октября 2010 - 20:16

Я используя такую комманду в IDE:
deleteCookie | <cookie-name> | path=/, domain=<domain-name>, recurse=true

Вроде работает


А по моему колдунство какое-то. Удалить кукиз = обновить кеш? Возможно, что броузер при старте новой сессии кеш не используется. Или вы имеете ввиду кеш со стороны сервера? Что-то я недопонял...
  • 0

#15 mosketrem

mosketrem

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

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


Отправлено 30 октября 2010 - 20:58

Возможно, Вы правы. Надо подумать, поэкспериментировать...
  • 0

#16 mosketrem

mosketrem

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

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


Отправлено 01 ноября 2010 - 08:34

А если
controlKeyDown
fireEvent //html controlKeyDown
keyDown //html \\116
controlKeyUp

так ?
  • 0


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

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