| OLD | NEW |
| (Empty) |
| 1 #!/usr/bin/env python | |
| 2 # Copyright (c) 2011 The Chromium Authors. All rights reserved. | |
| 3 # Use of this source code is governed by a BSD-style license that can be | |
| 4 # found in the LICENSE file. | |
| 5 | |
| 6 import logging | |
| 7 import random | |
| 8 | |
| 9 import pyauto_functional | |
| 10 from pyauto import PyUITest | |
| 11 from pyauto import GURL | |
| 12 | |
| 13 import autotour | |
| 14 | |
| 15 | |
| 16 class OmniboxModelTest(autotour.Godel, PyUITest): | |
| 17 """Omnibox Model which Opens tabs, navigates to specific URL's and keeps track | |
| 18 of URL's visited which are then verified agains the Omnibox's info. | |
| 19 """ | |
| 20 def __init__(self, methodName='runTest', **kwargs): | |
| 21 PyUITest.__init__(self, methodName=methodName, **kwargs) | |
| 22 self._tab_count = 1 | |
| 23 self._url_map = {} | |
| 24 self.InitUrls() | |
| 25 | |
| 26 def InitUrls(self): | |
| 27 """Setup Url Map which stores the name of the url and a list of url and | |
| 28 visited count. | |
| 29 """ | |
| 30 self._url_map = { | |
| 31 'google': ('http://www.google.com', 0), | |
| 32 'yahoo': ('http://www.yahoo.com', 0), | |
| 33 'msn': ('http://www.msn.com', 0), | |
| 34 'facebook': ('http://www.facebook.com', 0), | |
| 35 'twitter': ('http://www.twitter.com', 0), | |
| 36 } | |
| 37 | |
| 38 def CanOpenTab(self): | |
| 39 return self._tab_count < 5 | |
| 40 | |
| 41 def CanCloseTab(self): | |
| 42 return self._tab_count > 1 | |
| 43 | |
| 44 def CanNavigate(self): | |
| 45 # FIX: CanNavigate can be called if there is atleast one tab to be closed. | |
| 46 # Currently this condition is incorrect because CanCloseTab leaves atleast | |
| 47 # one tab because without that, there is some crash which is under | |
| 48 # investigation. | |
| 49 if self.CanCloseTab(): | |
| 50 return False | |
| 51 for key in self._url_map: | |
| 52 if self._url_map[key][1] == 0: | |
| 53 return True | |
| 54 return False | |
| 55 | |
| 56 def _GetOmniboxMatchesFor(self, text, windex=0, attr_dict=None): | |
| 57 """Fetch omnibox matches with the given attributes for the given query. | |
| 58 | |
| 59 Args: | |
| 60 text: the query text to use | |
| 61 windex: the window index to work on. Defaults to 0 (first window) | |
| 62 attr_dict: the dictionary of properties to be satisfied | |
| 63 | |
| 64 Returns: | |
| 65 a list of match items | |
| 66 """ | |
| 67 self.SetOmniboxText(text, windex=windex) | |
| 68 self.WaitUntilOmniboxQueryDone(windex=windex) | |
| 69 if not attr_dict: | |
| 70 matches = self.GetOmniboxInfo(windex=windex).Matches() | |
| 71 else: | |
| 72 matches = self.GetOmniboxInfo(windex=windex).MatchesWithAttributes( | |
| 73 attr_dict=attr_dict) | |
| 74 return matches | |
| 75 | |
| 76 @autotour.GodelAction(1, CanOpenTab) | |
| 77 def OpenTab(self): | |
| 78 """Opens a tab in the first window and navigates to a random site from | |
| 79 url map. | |
| 80 """ | |
| 81 logging.info('#In Open Tab') | |
| 82 self._tab_count = self._tab_count + 1 | |
| 83 key = random.choice(self._url_map.keys()) | |
| 84 logging.info('#Navigating to ' + self._url_map[key][0]) | |
| 85 self.AppendTab(GURL(self._url_map[key][0])) | |
| 86 self._url_map[key][1] = self._url_map[key][1] + 1 | |
| 87 self.VerifyOmniboxInfo() | |
| 88 | |
| 89 @autotour.GodelAction(10, CanCloseTab) | |
| 90 def CloseTab(self): | |
| 91 """Closes the first tab from the first window""" | |
| 92 self._tab_count = self._tab_count - 1 | |
| 93 self.GetBrowserWindow(0).GetTab(0).Close(True) | |
| 94 | |
| 95 def VerifyOmniboxInfo(self): | |
| 96 for key in self._url_map.keys(): | |
| 97 """Verify inline autocomplete for a pre-visited url.""" | |
| 98 search_for = key[:3] | |
| 99 matches = self._GetOmniboxMatchesFor(search_for, windex=0) | |
| 100 self.assertTrue(matches) | |
| 101 # Omnibox should suggest auto completed url as the first item | |
| 102 matches_description = matches[0] | |
| 103 term_to_find = search_for | |
| 104 if self._url_map[key][1] > 0: | |
| 105 logging.info('#verifying : ' + key) | |
| 106 logging.info('#verifying ' + key + ' text ' + search_for) | |
| 107 term_to_find = self._url_map[key][0][7:] | |
| 108 self.assertEqual('history-url', matches_description['type']) | |
| 109 self.assertTrue(self._url_map[key][0][11:] in | |
| 110 self.GetOmniboxInfo().Text()) | |
| 111 self.assertTrue(term_to_find in matches_description['contents']) | |
| 112 | |
| 113 @autotour.GodelAction(10, CanNavigate) | |
| 114 def Navigate(self): | |
| 115 """Navigates to a URL by picking a random url from list""" | |
| 116 logging.info('#In Navigate') | |
| 117 index = random.randint(0, len(self._url_map.keys()) - 1) | |
| 118 key = self._url_map.keys()[index] | |
| 119 logging.info('#navigating to ' + self._url_map[key][0]) | |
| 120 self.NavigateToURL(self._url_map[key][0]) | |
| 121 self._url_map[key][1] = self._url_map[key][1] + 1 | |
| 122 self.VerifyOmniboxInfo() | |
| 123 | |
| 124 def testExplore(self): | |
| 125 e = autotour.Explorer() | |
| 126 logging.info('#Explorer created') | |
| 127 e.Add(self) | |
| 128 logging.info('#Object added') | |
| 129 e.Explore(self.CanNavigate) | |
| 130 logging.info('#Done') | |
| 131 | |
| 132 | |
| 133 if __name__ == '__main__': | |
| 134 pyauto_functional.Main() | |
| OLD | NEW |