ThisDay = sel.get_eval("storedVars.ttttttt.getDay()")В IDE это отлично работает. В python выдает ошибку
Exception: ERROR: Threw an exception: storedVars.ttttttt is undefinedПочему не работает в python ? Может можно как-то заменить ?
Отправлено 09 ноября 2010 - 13:35
ThisDay = sel.get_eval("storedVars.ttttttt.getDay()")В IDE это отлично работает. В python выдает ошибку
Exception: ERROR: Threw an exception: storedVars.ttttttt is undefinedПочему не работает в python ? Может можно как-то заменить ?
Отправлено 10 ноября 2010 - 04:43
Отправлено 10 ноября 2010 - 12:08
Отправлено 11 ноября 2010 - 09:25
да, пайтон конечно может дать все. Но так как я работаю по схеме Selenium IDE -> Selenium RC + Python, то мне будет неудобно каждый раз вручную шерстить все строки файлов и переписывать участки кода. Вот и ищу способ попроще. Может можно что-то с автозаменой придумать ?Насколько знаю, при работе через RC вообще не поддерживаются методы сохранения значений переменных, т.к. они там не нужны, в данном случае сам Python вам предоставляет всё что нужно.
Отправлено 11 ноября 2010 - 09:27
StoredVar - это стандартный объект в IDE, в котором хранятся все js переменные. В IDE все нормально работает, а после экспорта в python - не работает.А можно весь текст? Есть подозрение что таки не определены storedVars
Отправлено 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 в том виде что записан ни в питоне. И там и там кинет одну и ту же ошибку:
Почему это получается? Да потому что storedVars.ttttttt действительно нигде не задан и не понятно что он такое вообще и почему у него может быть вызван getDay().[error] Threw an exception: storedVars.ttttttt is undefined
Отправлено 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()
Отправлено 11 ноября 2010 - 12:48
ttttttt = sel.get_eval("new Date()")так вы получаете текущую дату в браузере, и сохраняете ее в переменную питона, естественно при этом в браузере она не сохраняется
sel.get_eval("storedVars.x = new Date()") ThisDay = sel.get_eval("storedVars.x.getDay()")попробуйте сделать так, если оно вам конечно надо. ИМХО, лучше все же значение храниться в рантайм переменной нежели в браузере
Отправлено 11 ноября 2010 - 12:58
Угу, теперь понятно. Вообще не очень рекомендуется пользоваться storedVars в selenium core. Они не протаскиваются через весь test suite и вообще в RC ведут себя зачастую иначе (можно поискать в багтрекере селениума - там не сильно много багов на StoredVars, но есть). Лучше в данном случае пользоваться возможностями используемого языка, чем этой искусственной надстройкой. То есть вместо того чтобы звать ttttttt = sel.get_eval("new Date()") делать ttttttt = DateTime() (или как там в Python положено?).В общем, как я сказал, storedVars - это место, где хранятся внутренние переменные скрипта. Это зарезервированное имя в Selenium IDE. В IDE это и работает. А вот в RC - не хочет
Отправлено 11 ноября 2010 - 13:22
Но так как я работаю по схеме Selenium IDE -> Selenium RC + Python, то мне будет неудобно каждый раз вручную шерстить все строки файлов и переписывать участки кода.
Отправлено 11 ноября 2010 - 13:24
Я бы так и делал, но как я уже писал, тест-кейсы я пишу в IDE, а потом конвертирую для RC, чтобы можно было запускать для других браузеров кроме файрфокса, а также для получения файлов с отчетами о прогоне тестов. Т.е. сразу писать нормально я не могу, потому что тест-кейсы каждый день меняются, и я и так запариваюсь конвертировать с IDE в RCУгу, теперь понятно. Вообще не очень рекомендуется пользоваться storedVars в selenium core. Они не протаскиваются через весь test suite и вообще в RC ведут себя зачастую иначе (можно поискать в багтрекере селениума - там не сильно много багов на StoredVars, но есть). Лучше в данном случае пользоваться возможностями используемого языка, чем этой искусственной надстройкой. То есть вместо того чтобы звать ttttttt = sel.get_eval("new Date()") делать ttttttt = DateTime() (или как там в Python положено?).
В общем, как я сказал, storedVars - это место, где хранятся внутренние переменные скрипта. Это зарезервированное имя в Selenium IDE. В IDE это и работает. А вот в RC - не хочет
Отправлено 11 ноября 2010 - 13:33
Согласен, но я не представляю, как можно писать проверку наличия элементов на странице, правильную реакцию на клики и т.д. без IDE. Я обычно включаю IDE и либо вручную записываю действия в скрипт, вручную же проходя по тестовому алгоритму, либо вообще включаю Record и записываю свои действия. IDE значительно упрощает написание тест-кейсов. Писать же это все кодом с python... меня это немного пугает :)
Но так как я работаю по схеме Selenium IDE -> Selenium RC + Python, то мне будет неудобно каждый раз вручную шерстить все строки файлов и переписывать участки кода.
ИМХО. не совсем верный подход изначально. прелесть RC в том и есть чтобы пользоваться возможностями полноценного языка программирования, а при банальной конвертации уж больно много trash-кода образовывается,посмотреть хотя бы во что превращается, например,waitForElementPresent(а используется достаточно часто), так что от "шерстить" никуда не денешься - по крайней мере потом понятнее и проще будет поддерживать тесты, а так велика вероятность того, что, открыв достаточно сложный тест, который сейчас кажется понятнее, чем двери, через 3-4 месяца придется изрядно поморщить мозг - что это ,для чего, и что с этим делать. но о5 же всё зависит от целей которые вы преследуете.
Отправлено 11 ноября 2010 - 13:45
Попробовал. Не работает.ttttttt = sel.get_eval("new Date()")так вы получаете текущую дату в браузере, и сохраняете ее в переменную питона, естественно при этом в браузере она не сохраняетсяsel.get_eval("storedVars.x = new Date()") ThisDay = sel.get_eval("storedVars.x.getDay()")попробуйте сделать так, если оно вам конечно надо. ИМХО, лучше все же значение храниться в рантайм переменной нежели в браузере
Отправлено 11 ноября 2010 - 14:12
Ну если задача в том чтобы запускать под разными браузерами, то тесты написанные на IDE можно без переноса в RC пускать под разными браузерами. Нам туториал на сайте slenium вот что советует. Там же написано как получать файлики с отчетами.Я бы так и делал, но как я уже писал, тест-кейсы я пишу в IDE, а потом конвертирую для RC, чтобы можно было запускать для других браузеров кроме файрфокса, а также для получения файлов с отчетами о прогоне тестов. Т.е. сразу писать нормально я не могу, потому что тест-кейсы каждый день меняются, и я и так запариваюсь конвертировать с IDE в RC
Отправлено 11 ноября 2010 - 14:50
Отправлено 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
Отправлено 11 ноября 2010 - 15:02
Отправлено 11 ноября 2010 - 15:03
Отправлено 11 ноября 2010 - 15:03
Отправлено 11 ноября 2010 - 15:06
0 пользователей, 1 гостей, 0 анонимных