Taras
(Taras)
06.Март.2012 11:38:35
#1
И так столкнулся с проблемой.
Стартанул новый проэкт. Суть проэкта - это контролы сделаные с помощью html5
+ CSS
+ JS
+ Web GL
;
<body>
<div id="suiViewport">
<canvas width="798" height="598"></canvas>
</div>
</body>
На канвасе есть кнопки, контролы, которые как я понимаю управляються скриптом.
Кто то подскажет как это автоматизировать и реально ли это вообще ?)
Если нужно более детальное описание либо скрины канваса то скину, просто нужно концепцию автоматизации, и можно ли это сделать Селениумом любимым.
Спасибо.
polusok
(Mykhailo Poliarush)
06.Март.2012 19:52:00
#2
тут я думаю, абстрактные ответы не подойдут
надо смотреть на код и пробовать, потому без каких-то сорсов не обойтись
делать ошибки и пробовать, что-то еще
Taras
(Taras)
06.Март.2012 22:37:07
#3
так сорсы только на Java Script по ходу, так как html тот только что я скопировал више а css там ничего не показывает вообше конкретного)
кароче мне говорили девелоперы что там web GL как то с канвасом работает по координатах.
polusok
(Mykhailo Poliarush)
07.Март.2012 06:09:00
#4
надо обращаться к javascript и через вызов методов, работать с канвасом
потому, тут надо видеть также javascript
почитай http://www.theautomatedtester.co.uk/blog/2011/selenium-advanced-user-interactions.html , но тут много не взять
вот еще пример был автоматизации игры http://arandomurl.com/2010/08/05/html5-helicopter.html
код для тестирования на python и java GitHub - davehunt/selenicopterpilot
import unittest
from selenium import webdriver
from base_page import BasePage
class CrashTests(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Firefox()
def testShouldCrashIntoCeiling(self):
base_page = BasePage(self.driver)
base_page.start_game()
base_page.engage_thrusters()
base_page.wait_until_crash()
self.assertEquals(base_page.helicopter_altitude, 90)
def testShouldCrashIntoFloor(self):
base_page = BasePage(self.driver)
base_page.start_game()
base_page.wait_until_crash()
self.assertEquals(base_page.helicopter_altitude, 14)
def tearDown(self):
self.driver.quit()
if __name__ == "__main__":
unittest.main()
import time
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.common.exceptions import WebDriverException
class BasePage():
_controls_locator = (By.ID, "helicopter")
def __init__(self, driver):
self.driver = driver
driver.get("file:///Users/dave/workspace/selenicopter/with-obstacles/index.html")
def _cache_debug(self):
while True:
try:
self._debug = self.driver.execute_script("return myHelicopter.gameData()")
break
except WebDriverException:
time.sleep(0.5)
@property
def game_state(self):
self._cache_debug()
return self._debug["state"]
@property
def helicopter_altitude(self):
return self._debug["position"]
def _wait_until_game_is_ready(self):
while not self.game_state == 1:
time.sleep(0.5)
def wait_until_crash(self):
while not self.game_state == 4:
time.sleep(0.5)
def start_game(self):
self._wait_until_game_is_ready()
controls = self._find_element(self._controls_locator)
controls.send_keys(Keys.RETURN)
def engage_thrusters(self):
controls = self._find_element(self._controls_locator)
controls.send_keys(Keys.RETURN)
def _find_element(self, locator):
return self.driver.find_element(locator[0], locator[1])
попрактиковаться можно попробовать на этих примерах http://www.canvasdemos.com/
polusok
(Mykhailo Poliarush)
07.Март.2012 06:15:00
#5
кстати для общего развития, есть вот такие вот слайды http://slides.html5rocks.com/#landing-slide которые очень хорошо описывают, что собой представляет html5
а попробовать canvas в действии можно тут http://www.w3schools.com/html5/html5_canvas.asp
в вашем случае надо понимать прикладную задачу, иначе тяжело разбираться.
polusok
(Mykhailo Poliarush)
11.Март.2012 15:52:42
#6
как успехи с автоматизацией канваса?
Taras
(Taras)
11.Март.2012 16:46:45
#7
там все заложено в JS, девелоперы сказали кинуться этого велосипеда)
кароче говоря, в тех всех примерах, тестирование идет по координатах, а мне нужно как бы смысл самых скриптов которые генерируют изображеие в канвасе знать.
polusok
(Mykhailo Poliarush)
11.Март.2012 17:04:05
#8
понятно, ну хорошо, интересно посмотреть хотя бы на скриншот, что собственно на самой странице.
и если все в js заложено, то нужно тогда и с js работать, т.е. через вызов соответствующий функций
тут конечно, надо больше с разработчиками общаться, в плане, какие методы высокого уровня в js можно использовать.
Taras
(Taras)
11.Март.2012 19:35:05
#9
в том то и дело что у меня никакого доступа к сорсам нету )
на скрине написаный калькулятор на канвасе и он в 3D - так как WED GL еще используеться
скрин завтра докину может, когда на роботе буду