def setup_module(module): "Login and create three lists" client = WindmillTestClient(__name__) client.asserts.assertNode(id=u"id_username") client.type(text=u'visa', id=u'id_username') client.asserts.assertNode(id=u"id_password") client.type(text=u'salakala', id=u'id_password') client.click(value=u'login') client.waits.forPageLoad(timeout=u'20000') client.asserts.assertText(xpath=u"//div[@id='user-tools']/a", validator=u'Log out') client.execJS(js='window.autorefresh_freq = -1;') def create_list(i): name = 'test list ' + str(i) client.asserts.assertNotNode(id=u"subscription_" + str(i)) client.asserts.assertNode(id=u"create_list_nameinput") client.type(id=u'create_list_nameinput', text=name) client.keyUp(id=u'create_list_nameinput', options='13,false,false,false,false,false') client.waits.forElement(id=u"subscription_" + str(i), timeout=u'20000') client.asserts.assertJS(js=u"$('#listmenu_listlist').is(':hidden')") client.asserts.assertNode(id=u"lists_button") client.click(id=u"lists_button") # show list menu client.waits.sleep(milliseconds=u'500') client.asserts.assertNotJS(js=u"$('#listmenu_listlist').is(':hidden')") for i in [1, 2, 3]: create_list(i) client.click(id=u"lists_button") # hide list menu
def setup_module(module): "Login and create three lists" client = WindmillTestClient(__name__) client.asserts.assertNode(id=u"id_username") client.type(text=u'visa', id=u'id_username') client.asserts.assertNode(id=u"id_password") client.type(text=u'salakala', id=u'id_password') client.click(value=u'login') client.waits.forPageLoad(timeout=u'20000') client.asserts.assertText(xpath=u"//div[@id='user-tools']/a", validator=u'Log out') client.execJS(js='window.autorefresh_freq = -1;') def create_list(i): name = 'test list '+str(i) client.asserts.assertNotNode(id=u"subscription_"+str(i)) client.asserts.assertNode(id=u"create_list_nameinput") client.type(id=u'create_list_nameinput', text=name) client.keyUp(id=u'create_list_nameinput', options='13,false,false,false,false,false') client.waits.forElement(id=u"subscription_"+str(i), timeout=u'20000') client.asserts.assertJS(js=u"$('#listmenu_listlist').is(':hidden')") client.asserts.assertNode(id=u"lists_button") client.click(id=u"lists_button") # show list menu client.waits.sleep(milliseconds=u'500') client.asserts.assertNotJS(js=u"$('#listmenu_listlist').is(':hidden')") for i in [1,2,3]: create_list(i) client.click(id=u"lists_button") # hide list menu
def activate_items(): client = WindmillTestClient(__name__) #Names of items to buy and activate itemNames = ['Water', 'Coffee', 'Beer', 'Hot milk', 'Coffee to-go'] login(client, 'root', 'root') #Store base URL client.storeVarFromJS(options=u"BaseUrl|window.location.href.replace(window.location.search, '')") #Go to Shop client.storeURL(link=u'Shop') client.open(url=u'{$Shop}') client.waits.forElement(id=u'items') #Buy items for itemName in itemNames: client.click(jquery=(u"('a[title=%s]')[0]" % itemName)) client.click(jquery=u"('.poker_submit[onclick*=subtarget]')[0]") #Go to medium profile to extract item IDs client.open(url=u'{$BaseUrl}?q=poker/profile/medium') for itemName in itemNames: client.storeVarFromJS(options=(u'%sId|$("img[title=%s]").attr("id")' % (itemName, itemName))) #Go and sit to a table client.open(url=u'{$BaseUrl}') client.waits.forElement(classname=u'jpoker_table_list_table_empty') client.click(id=u'play-now-button') client.waits.forElement(classname=u'jpoker_table',timeout=u'20000') #Items activation using JS (couldn't get Windmill to select and click in the iframe) for itemName in itemNames: #Set item_id JS variable using a JS assertion because Windmill variables are not working in execJS client.asserts.assertJS(js=u'!isNaN(item_id = parseInt("{$%sId}"))' % itemName) client.execJS(js=u'os_poker_send_message({type:"os_poker_activate_item", id_item: item_id});') #Wait for the item to be received by the player client.waits.forElement(classname=u'poker_player_item poker_gift_%s' % itemName.replace(' ', '-'),timeout=u'7000') client.click(classname=u'logout')
def test(): client = WindmillTestClient(__name__) client.click(id=u'viewNavCenterRight') client.waits.sleep(milliseconds=2000) client.doubleClick(id=u'hourDiv1-1200') client.waits.sleep(milliseconds=2000) client.type(text=u'Properties Test', id=u'noteTitle') client.type(text=u'9:00', id=u'startTime') client.type(text=u'4:00', id=u'endTime') client.radio(id=u'startMeridianAM') client.radio(id=u'endMeridianPM') client.select(id=u'eventStatus', option=u'Tentative') client.type(text=u'A description for the properties test', id=u'noteDescription') if client.execJS(js='1 == 0')['output']: pass ## if client.execJS(js=''lookupNode({id: 'a_node_id'}).innerHTML")['output'] == "some test": ## pass client.keyPress(id=u'some_id', options='a,true,false,false,false,false')
def logged_in_client(user='******', passwd='test', client=None): """ Opens up the root URL. If user is not logged in, logs him in. """ if client is None: client = WindmillTestClient(__name__) client.open(url=windmill.settings['TEST_URL'] + '?clearSession=true') client.waits.forPageLoad() client.waits.forElement(classname='hue-loaded') if client.execJS(js="!!$('hue-login')")["output"]: client.waits.forElement(classname='hue-username') client.click(jquery='(".hue-username")[0]') client.type(classname='hue-username', text=user) client.click(classname='hue-password') client.type(classname='hue-password', text=passwd) client.click(classname='hue-continue') # Health dashboard launches at login; ideally we'd have a # better "ready" notification. time.sleep(2.0) # TODO: Hacky sleep! client.waits.forElement(classname='loggedIn', timeout='20000') return client
def logged_in_client(user='******', passwd='test', client=None): """ Opens up the root URL. If user is not logged in, logs him in. """ if client is None: client = WindmillTestClient(__name__) client.open(url=windmill.settings['TEST_URL'] + '?clearSession=true') client.waits.forPageLoad() client.waits.forElement(classname='hue-loaded') if client.execJS(js="!!$('hue-login')")["output"]: client.waits.forElement(classname='hue-username') client.click(jquery='(".hue-username")[0]') client.type(classname='hue-username', text=user) client.click(classname='hue-password') client.type(classname='hue-password', text=passwd) client.click(classname='hue-continue') # Health dashboard launches at login; ideally we'd have a # better "ready" notification. time.sleep(2.0) # TODO: Hacky sleep! client.waits.forElement(classname='loggedIn', timeout='20000') return client
def test_wmunti1(): client = WindmillTestClient(__name__, assertions=False) assert client.open( url= u'http://tutorial.getwindmill.com/windmill-unittests/unit_tester.html' )['result'] assert client.click(id=u'subBtn')['result'] # Tests that sleeps actually wait for long enough start = datetime.now() assert client.waits.sleep(milliseconds=u'3000')['result'] end = datetime.now() print(end - start) assert (end - start).seconds >= 3 assert client.asserts.assertText(validator=u'', id=u'sleeper')['result'] # Tests that an 8 second sleep actually waits long enough start = datetime.now() assert client.waits.sleep(milliseconds=u'8000')['result'] end = datetime.now() print(end - start) assert (end - start).seconds >= 8 #execIDEJS and storeURL test assert client.storeURL(link='AwesomeLink') assert client.execIDEJS( js= 'windmill.varRegistry.items["{$AwesomeLink}"] = windmill.varRegistry.items["{$AwesomeLink}"].replace(\'http\', \'abcd\');' ) assert client.asserts.assertJS( js="'{$AwesomeLink}' == 'abcd://www.awesome.com/';") #unit tests for select by value assert client.select(val='d', id='flavor')['result'] assert client.asserts.assertSelected(validator='d', id='flavor')['result'] assert client.asserts.assertText(validator=u'Slept', id=u'sleeper')['result'] assert client.type(text=u'my test text', id=u'junkfield')['result'] assert client.asserts.assertValue(validator=u'my test text', id=u'junkfield')['result'] assert client.radio(id=u'cougar')['result'] assert client.asserts.assertChecked(id=u'cougar')['result'] assert client.radio(id=u'duck')['result'] assert client.asserts.assertChecked(id=u'duck')['result'] assert client.check(id=u'Smallpox')['result'] assert client.asserts.assertChecked(id=u'Smallpox')['result'] assert not client.asserts.assertChecked(id=u'Mumps')['result'] assert not client.asserts.assertChecked(id=u'Dizziness')['result'] assert client.check(id=u'Mumps')['result'] assert client.asserts.assertChecked(id=u'Mumps')['result'] assert not client.asserts.assertChecked(id=u'Dizziness')['result'] assert client.check(id=u'Dizziness')['result'] assert client.asserts.assertChecked(id=u'Dizziness')['result'] assert client.type(text=u'The text area tester', name=u'story')['result'] assert client.asserts.assertValue(validator=u'The text area tester', id=u'story')['result'] assert client.select(option=u'Strawberry', id=u'flavor')['result'] assert client.asserts.assertSelected(validator=u'b', id=u'flavor')['result'] assert client.select(option=u'Rum and Raisin', id=u'flavor')['result'] assert client.asserts.assertSelected(validator=u'c', id=u'flavor')['result'] assert not client.asserts.assertSelected(validator=u'd', id=u'flavor')['result'] assert client.select(option=u'Peach and Orange', id=u'flavor')['result'] assert client.asserts.assertSelected(validator=u'd', id=u'flavor')['result'] assert client.click(id=u'clickme')['result'] assert client.asserts.assertText(validator=u'Clicked', id=u'clickme')['result'] assert client.doubleClick(id=u'dblclickme')['result'] assert client.asserts.assertText(validator=u'Double Clicked', id=u'dblclickme')['result'] assert client.mouseDown(id=u'mousedownme')['result'] assert client.asserts.assertText(validator=u'mouse downed', id=u'mousedownme')['result'] assert client.mouseUp(id=u'mouseupme')['result'] assert client.mouseOver(id=u'mouseoverme')['result'] assert client.asserts.assertText(validator=u'mouse overred', id=u'mouseoverme')['result'] assert client.mouseOut(id=u'mouseoverme')['result'] assert client.asserts.assertText(validator=u'mouseouted', id=u'mouseoverme')['result'] assert client.asserts.assertText(validator=u'mouse upped', id=u'mouseupme')['result'] assert client.asserts.assertNode(id=u'amIhere')['result'] assert client.asserts.assertProperty(validator=u'style.height|50px', id=u'amIhere')['result'] assert not client.asserts.assertNode(id=u'doesntExist')['result'] assert not client.asserts.assertNode(id=u'created')['result'] assert client.click(id=u'wfeBtn')['result'] assert client.waits.forElement(id=u'created', timeout=u'40000')['result'] assert client.asserts.assertNode(id=u'created')['result'] assert client.asserts.assertJS( js=u'window.document.title == "windmill_js_unit"') assert client.asserts.assertIDEJS( js=u'window.document.title == "Windmill IDE"') assert client.execJS(js=u'window.awesome = true;') assert client.asserts.assertJS(js=u'window.awesome == true;') assert client.execIDEJS(js=u'window.awesome = false;') assert client.asserts.assertIDEJS(js=u'window.awesome == false;')
def test_wmunti1(): client = WindmillTestClient(__name__, assertions=False) assert client.open(url=u'http://tutorial.getwindmill.com/windmill-unittests/unit_tester.html')['result'] assert client.click(id=u'subBtn')['result'] # Tests that sleeps actually wait for long enough start = datetime.now() assert client.waits.sleep(milliseconds=u'3000')['result'] end = datetime.now() print (end - start) assert ( end - start ).seconds >= 3 assert client.asserts.assertText(validator=u'', id=u'sleeper')['result'] # Tests that an 8 second sleep actually waits long enough start = datetime.now() assert client.waits.sleep(milliseconds=u'8000')['result'] end = datetime.now() print (end - start) assert ( end - start ).seconds >= 8 #execIDEJS and storeURL test assert client.storeURL(link='AwesomeLink') assert client.execIDEJS(js='windmill.varRegistry.items["{$AwesomeLink}"] = windmill.varRegistry.items["{$AwesomeLink}"].replace(\'http\', \'abcd\');') assert client.asserts.assertJS(js="'{$AwesomeLink}' == 'abcd://www.awesome.com/';") #unit tests for select by value assert client.select(val='d', id='flavor')['result'] assert client.asserts.assertSelected(validator='d', id='flavor')['result'] assert client.asserts.assertText(validator=u'Slept', id=u'sleeper')['result'] assert client.type(text=u'my test text', id=u'junkfield')['result'] assert client.asserts.assertValue(validator=u'my test text', id=u'junkfield')['result'] assert client.radio(id=u'cougar')['result'] assert client.asserts.assertChecked(id=u'cougar')['result'] assert client.radio(id=u'duck')['result'] assert client.asserts.assertChecked(id=u'duck')['result'] assert client.check(id=u'Smallpox')['result'] assert client.asserts.assertChecked(id=u'Smallpox')['result'] assert not client.asserts.assertChecked(id=u'Mumps')['result'] assert not client.asserts.assertChecked(id=u'Dizziness')['result'] assert client.check(id=u'Mumps')['result'] assert client.asserts.assertChecked(id=u'Mumps')['result'] assert not client.asserts.assertChecked(id=u'Dizziness')['result'] assert client.check(id=u'Dizziness')['result'] assert client.asserts.assertChecked(id=u'Dizziness')['result'] assert client.type(text=u'The text area tester', name=u'story')['result'] assert client.asserts.assertValue(validator=u'The text area tester', id=u'story')['result'] assert client.select(option=u'Strawberry', id=u'flavor')['result'] assert client.asserts.assertSelected(validator=u'b', id=u'flavor')['result'] assert client.select(option=u'Rum and Raisin', id=u'flavor')['result'] assert client.asserts.assertSelected(validator=u'c', id=u'flavor')['result'] assert not client.asserts.assertSelected(validator=u'd', id=u'flavor')['result'] assert client.select(option=u'Peach and Orange', id=u'flavor')['result'] assert client.asserts.assertSelected(validator=u'd', id=u'flavor')['result'] assert client.click(id=u'clickme')['result'] assert client.asserts.assertText(validator=u'Clicked', id=u'clickme')['result'] assert client.doubleClick(id=u'dblclickme')['result'] assert client.asserts.assertText(validator=u'Double Clicked', id=u'dblclickme')['result'] assert client.mouseDown(id=u'mousedownme')['result'] assert client.asserts.assertText(validator=u'mouse downed', id=u'mousedownme')['result'] assert client.mouseUp(id=u'mouseupme')['result'] assert client.mouseOver(id=u'mouseoverme')['result'] assert client.asserts.assertText(validator=u'mouse overred',id=u'mouseoverme')['result'] assert client.mouseOut(id=u'mouseoverme')['result'] assert client.asserts.assertText(validator=u'mouseouted',id=u'mouseoverme')['result'] assert client.asserts.assertText(validator=u'mouse upped', id=u'mouseupme')['result'] assert client.asserts.assertNode(id=u'amIhere')['result'] assert client.asserts.assertProperty(validator=u'style.height|50px', id=u'amIhere')['result'] assert not client.asserts.assertNode(id=u'doesntExist')['result'] assert not client.asserts.assertNode(id=u'created')['result'] assert client.click(id=u'wfeBtn')['result'] assert client.waits.forElement(id=u'created', timeout=u'40000')['result'] assert client.asserts.assertNode(id=u'created')['result'] assert client.asserts.assertJS(js=u'window.document.title == "windmill_js_unit"') assert client.asserts.assertIDEJS(js=u'window.document.title == "Windmill IDE"') assert client.execJS(js=u'window.awesome = true;') assert client.asserts.assertJS(js=u'window.awesome == true;') assert client.execIDEJS(js=u'window.awesome = false;') assert client.asserts.assertIDEJS(js=u'window.awesome == false;')
def test_scrape_coveritlive(): client = WindmillTestClient(__name__) #client.open(url = 'http://www.coveritlive.com/index2.php/option=com_altcaster/task=viewaltcast/altcast_code=c3c11df0e3/height=600/width=608') client.waits.sleep(milliseconds=2000) #client.click(id="divsrc2") client.execJS(js='displayAuthModal(true)') # removes the "play" button, activates chat. #client.waits.sleep(milliseconds=5000) # just wait a couple of seconds for this to load. May want to change to waits.forElement client.waits.forElement(classname=u"chatmsg", timeout=10000) #if there are additional entries, they'll be hidden and AJAX will be required. Let's click the buttons #literally no variations of this click work for me. #client.click(jquery=u'("td.addlentrytext a")') #client.click(xpath=u"//td[@class='addlentrytext']/a") #not totally sure how to wait only until all ajax calls are done, since the ids are random. #client.waits.sleep(milliseconds=5000) #gets the current HTML, after JS has loaded. trigger_additional_entries(client) # Create soup from the full page and get desired information response = client.commands.getPageText() assert response['status'] assert response['result'] soup = BeautifulSoup(response['result']) #container for messages / dates message_container = soup.find('div', id = 'mainchattext') #messages = soup.findAll("div", "chatmsg") dateline = None ''' this will find all subdivs, in some cases the chatmsg is within another subdiv. This happens if there are too many entries in the liveblog and it makes you load the extras via ajax. ''' messages = [] for message in message_container.findAll('div'): if message.has_key('id') and message['id'].find('entry') != -1: for m in message.findAll('div'): messages.append(m) else: messages.append(message) for message in messages: if not message.has_key('class'): print message continue #try: if message['class'].find('dateline') != -1: #format: Day-Of-Week Month Date, Year #format: %A %B %d, %Y dateline = message.text print dateline if message['class'].find('chatmsg') != -1: parse_chat_message(message, dateline)