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

Фотография

storedVars в Selenium RC


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

#1 mosketrem

mosketrem

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

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


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

Сконвертировал тесты Selenium IDE в python для RC. Там есть такие строчки
ThisDay = sel.get_eval("storedVars.ttttttt.getDay()")
В IDE это отлично работает. В python выдает ошибку
Exception: ERROR: Threw an exception: storedVars.ttttttt is undefined
Почему не работает в python ? Может можно как-то заменить ?
  • 0

#2 OVA

OVA

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

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

Отправлено 10 ноября 2010 - 04:43

А можно весь текст? Есть подозрение что таки не определены storedVars
  • 0

#3 vitorg

vitorg

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

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

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

Насколько знаю, при работе через RC вообще не поддерживаются методы сохранения значений переменных, т.к. они там не нужны, в данном случае сам Python вам предоставляет всё что нужно.
  • 0

#4 mosketrem

mosketrem

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

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


Отправлено 11 ноября 2010 - 09:25

Насколько знаю, при работе через RC вообще не поддерживаются методы сохранения значений переменных, т.к. они там не нужны, в данном случае сам Python вам предоставляет всё что нужно.

да, пайтон конечно может дать все. Но так как я работаю по схеме Selenium IDE -> Selenium RC + Python, то мне будет неудобно каждый раз вручную шерстить все строки файлов и переписывать участки кода. Вот и ищу способ попроще. Может можно что-то с автозаменой придумать ?
  • 0

#5 mosketrem

mosketrem

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

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


Отправлено 11 ноября 2010 - 09:27

А можно весь текст? Есть подозрение что таки не определены storedVars

StoredVar - это стандартный объект в IDE, в котором хранятся все js переменные. В IDE все нормально работает, а после экспорта в python - не работает.
  • 0

#6 OVA

OVA

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

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

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

Вот простой скриптик:
from selenium import selenium
import unittest, time, re

class Untitled(unittest.TestCase):
    def setUp(self):
        self.verificationErrors = []
        self.selenium = selenium("localhost", 4444, "*chrome", "google.com")
        self.selenium.start()
    
    def test_untitled(self):
        sel = self.selenium
        ThisDay = sel.get_eval("storedVars.ttttttt.getDay()")
        sel.type("q", ThisDay)
    
    def tearDown(self):
        self.selenium.stop()
        self.assertEqual([], self.verificationErrors)

if __name__ == "__main__":
    unittest.main()
Он не работает ни в IDE в том виде что записан ни в питоне. И там и там кинет одну и ту же ошибку:

[error] Threw an exception: storedVars.ttttttt is undefined

Почему это получается? Да потому что storedVars.ttttttt действительно нигде не задан и не понятно что он такое вообще и почему у него может быть вызван getDay().

Это то что я вижу пока.

Собственно в вашем случае судя по исключению, которое кидают, storedVars.ttttttt где-то потерялся (если он вообще где-то в этом скрипте задан, а не в другом).
  • 0

#7 mosketrem

mosketrem

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

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


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

Прошу прощения за неполный код.
Вот более детальная информация:
from selenium import selenium
import unittest, time, re

class create_nextweek_task(unittest.TestCase):
    def setUp(self):
        self.verificationErrors = []
        self.selenium = selenium("localhost", 4444, "*chrome", "https://staging.nimble.com/")
        self.selenium.start()
    
    def test_create_nextweek_task(self):
        sel = self.selenium
        ....
        ttttttt = sel.get_eval("new Date()")
        ....
        ThisDay = sel.get_eval("storedVars.ttttttt.getDay()")
        myFlagsNEXTWEEK = sel.get_eval("['next_week', 'next_week', 'next_week', 'next_week', 'next_week', 'next_week', 'tomorrow']")
        flagNEXTWEEK = sel.get_eval("storedVars.myFlagsNEXTWEEK[storedVars.ThisDay]")

    def tearDown(self):
        self.selenium.stop()
        self.assertEqual([], self.verificationErrors)

if __name__ == "__main__":
    unittest.main()

В общем, как я сказал, storedVars - это место, где хранятся внутренние переменные скрипта. Это зарезервированное имя в Selenium IDE. В IDE это и работает. А вот в RC - не хочет
  • 0

#8 popo_kid

popo_kid

    Активный участник

  • Members
  • PipPip
  • 79 сообщений

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

ttttttt = sel.get_eval("new Date()")
так вы получаете текущую дату в браузере, и сохраняете ее в переменную питона, естественно при этом в браузере она не сохраняется

sel.get_eval("storedVars.x = new Date()")
ThisDay = sel.get_eval("storedVars.x.getDay()")
попробуйте сделать так, если оно вам конечно надо. ИМХО, лучше все же значение храниться в рантайм переменной нежели в браузере
  • 0

#9 OVA

OVA

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

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

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

В общем, как я сказал, storedVars - это место, где хранятся внутренние переменные скрипта. Это зарезервированное имя в Selenium IDE. В IDE это и работает. А вот в RC - не хочет

Угу, теперь понятно. Вообще не очень рекомендуется пользоваться storedVars в selenium core. Они не протаскиваются через весь test suite и вообще в RC ведут себя зачастую иначе (можно поискать в багтрекере селениума - там не сильно много багов на StoredVars, но есть). Лучше в данном случае пользоваться возможностями используемого языка, чем этой искусственной надстройкой. То есть вместо того чтобы звать ttttttt = sel.get_eval("new Date()") делать ttttttt = DateTime() (или как там в Python положено?).
  • 0

#10 horhe

horhe

    Активный участник

  • Members
  • PipPip
  • 100 сообщений
  • ФИО:Юрко
  • Город:Kraków

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

Но так как я работаю по схеме Selenium IDE -> Selenium RC + Python, то мне будет неудобно каждый раз вручную шерстить все строки файлов и переписывать участки кода.


ИМХО. не совсем верный подход изначально. прелесть RC в том и есть чтобы пользоваться возможностями полноценного языка программирования, а при банальной конвертации уж больно много trash-кода образовывается,посмотреть хотя бы во что превращается, например,waitForElementPresent(а используется достаточно часто), так что от "шерстить" никуда не денешься - по крайней мере потом понятнее и проще будет поддерживать тесты, а так велика вероятность того, что, открыв достаточно сложный тест, который сейчас кажется понятнее, чем двери, через 3-4 месяца придется изрядно поморщить мозг - что это ,для чего, и что с этим делать. но о5 же всё зависит от целей которые вы преследуете.
  • 0
Piobaireachd isn't mysterious, difficult or hard - it's just music...

#11 mosketrem

mosketrem

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

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


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


В общем, как я сказал, storedVars - это место, где хранятся внутренние переменные скрипта. Это зарезервированное имя в Selenium IDE. В IDE это и работает. А вот в RC - не хочет

Угу, теперь понятно. Вообще не очень рекомендуется пользоваться storedVars в selenium core. Они не протаскиваются через весь test suite и вообще в RC ведут себя зачастую иначе (можно поискать в багтрекере селениума - там не сильно много багов на StoredVars, но есть). Лучше в данном случае пользоваться возможностями используемого языка, чем этой искусственной надстройкой. То есть вместо того чтобы звать ttttttt = sel.get_eval("new Date()") делать ttttttt = DateTime() (или как там в Python положено?).

Я бы так и делал, но как я уже писал, тест-кейсы я пишу в IDE, а потом конвертирую для RC, чтобы можно было запускать для других браузеров кроме файрфокса, а также для получения файлов с отчетами о прогоне тестов. Т.е. сразу писать нормально я не могу, потому что тест-кейсы каждый день меняются, и я и так запариваюсь конвертировать с IDE в RC
  • 0

#12 mosketrem

mosketrem

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

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


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


Но так как я работаю по схеме Selenium IDE -> Selenium RC + Python, то мне будет неудобно каждый раз вручную шерстить все строки файлов и переписывать участки кода.


ИМХО. не совсем верный подход изначально. прелесть RC в том и есть чтобы пользоваться возможностями полноценного языка программирования, а при банальной конвертации уж больно много trash-кода образовывается,посмотреть хотя бы во что превращается, например,waitForElementPresent(а используется достаточно часто), так что от "шерстить" никуда не денешься - по крайней мере потом понятнее и проще будет поддерживать тесты, а так велика вероятность того, что, открыв достаточно сложный тест, который сейчас кажется понятнее, чем двери, через 3-4 месяца придется изрядно поморщить мозг - что это ,для чего, и что с этим делать. но о5 же всё зависит от целей которые вы преследуете.

Согласен, но я не представляю, как можно писать проверку наличия элементов на странице, правильную реакцию на клики и т.д. без IDE. Я обычно включаю IDE и либо вручную записываю действия в скрипт, вручную же проходя по тестовому алгоритму, либо вообще включаю Record и записываю свои действия. IDE значительно упрощает написание тест-кейсов. Писать же это все кодом с python... меня это немного пугает :)
  • 0

#13 mosketrem

mosketrem

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

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


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

ttttttt = sel.get_eval("new Date()")
так вы получаете текущую дату в браузере, и сохраняете ее в переменную питона, естественно при этом в браузере она не сохраняется

sel.get_eval("storedVars.x = new Date()")
ThisDay = sel.get_eval("storedVars.x.getDay()")
попробуйте сделать так, если оно вам конечно надо. ИМХО, лучше все же значение храниться в рантайм переменной нежели в браузере

Попробовал. Не работает.
  • 0

#14 OVA

OVA

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

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

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

Я бы так и делал, но как я уже писал, тест-кейсы я пишу в IDE, а потом конвертирую для RC, чтобы можно было запускать для других браузеров кроме файрфокса, а также для получения файлов с отчетами о прогоне тестов. Т.е. сразу писать нормально я не могу, потому что тест-кейсы каждый день меняются, и я и так запариваюсь конвертировать с IDE в RC

Ну если задача в том чтобы запускать под разными браузерами, то тесты написанные на IDE можно без переноса в RC пускать под разными браузерами. Нам туториал на сайте slenium вот что советует. Там же написано как получать файлики с отчетами.
RC совсем не для этого) Он для более удобной организации работы, более гибких тестов и так далее. Если интересно, то можете поискать на самом сайте software-testing.ru как и зачем писать автоматические тесты.
  • 0

#15 mosketrem

mosketrem

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

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


Отправлено 11 ноября 2010 - 14:50

хм... опять я невнимательно прочел документацию... Спасибо, сейчас попробую.
  • 0

#16 mosketrem

mosketrem

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

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


Отправлено 11 ноября 2010 - 15:00

вот что выдало:
HTTP ERROR: 404

Not found

RequestURI=/selenium-server/tests/TEST+SUITE+create+tasks.html
Хотя путь к тест-сьюту задан как :
/home/<user_name>/SELENIUM/selenium/Activities/TEST SUITE create tasks.html

  • 0

#17 mosketrem

mosketrem

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

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


Отправлено 11 ноября 2010 - 15:02

видать пробелы ему не нравятся
  • 0

#18 mosketrem

mosketrem

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

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


Отправлено 11 ноября 2010 - 15:03

без пробела запустился, но хочет скачать gzip (я об этой проблеме Selenium RC уже писал на этом форуме). Попробую вторую версию сервера
  • 0

#19 OVA

OVA

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

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

Отправлено 11 ноября 2010 - 15:03

Это все можно было одним сообщением, а еще лучше отдельной темой как проблема оформится в голове)
  • 0

#20 mosketrem

mosketrem

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

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


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

вроде запустилось, но о результатах пока сказать не могу. Злобные программисты сломали сайт, так что жду когда починят. Надеюсь, что все получится.
  • 0


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

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