Best Python code snippet using autotest_python
window.py
Source:window.py
...113 """114 Compatibility with ctypes.115 Allows passing transparently a Window object to an API call.116 """117 return self.get_handle()118 def get_handle(self):119 """120 @rtype: int121 @return: Window handle.122 @raise ValueError: No window handle set.123 """124 if self.hWnd is None:125 raise ValueError("No window handle set!")126 return self.hWnd127 def get_pid(self):128 """129 @rtype: int130 @return: Global ID of the process that owns this window.131 """132 if self.dwProcessId is not None:133 return self.dwProcessId134 self.__get_pid_and_tid()135 return self.dwProcessId136 def get_tid(self):137 """138 @rtype: int139 @return: Global ID of the thread that owns this window.140 """141 if self.dwThreadId is not None:142 return self.dwThreadId143 self.__get_pid_and_tid()144 return self.dwThreadId145 def __get_pid_and_tid(self):146 "Internally used by get_pid() and get_tid()."147 self.dwThreadId, self.dwProcessId = \148 win32.GetWindowThreadProcessId(self.get_handle())149 def __load_Process_class(self):150 global Process # delayed import151 if Process is None:152 from winappdbg.process import Process153 def __load_Thread_class(self):154 global Thread # delayed import155 if Thread is None:156 from winappdbg.thread import Thread157 def get_process(self):158 """159 @rtype: L{Process}160 @return: Parent Process object.161 """162 if self.__process is not None:163 return self.__process164 self.__load_Process_class()165 self.__process = Process(self.get_pid())166 return self.__process167 def set_process(self, process = None):168 """169 Manually set the parent process. Use with care!170 @type process: L{Process}171 @param process: (Optional) Process object. Use C{None} to autodetect.172 """173 if process is None:174 self.__process = None175 else:176 self.__load_Process_class()177 if not isinstance(process, Process):178 msg = "Parent process must be a Process instance, "179 msg += "got %s instead" % type(process)180 raise TypeError(msg)181 self.dwProcessId = process.get_pid()182 self.__process = process183 def get_thread(self):184 """185 @rtype: L{Thread}186 @return: Parent Thread object.187 """188 if self.__thread is not None:189 return self.__thread190 self.__load_Thread_class()191 self.__thread = Thread(self.get_tid())192 return self.__thread193 def set_thread(self, thread = None):194 """195 Manually set the thread process. Use with care!196 @type thread: L{Thread}197 @param thread: (Optional) Thread object. Use C{None} to autodetect.198 """199 if thread is None:200 self.__thread = None201 else:202 self.__load_Thread_class()203 if not isinstance(thread, Thread):204 msg = "Parent thread must be a Thread instance, "205 msg += "got %s instead" % type(thread)206 raise TypeError(msg)207 self.dwThreadId = thread.get_tid()208 self.__thread = thread209 def __get_window(self, hWnd):210 """211 User internally to get another Window from this one.212 It'll try to copy the parent Process and Thread references if possible.213 """214 window = Window(hWnd)215 if window.get_pid() == self.get_pid():216 window.set_process( self.get_process() )217 if window.get_tid() == self.get_tid():218 window.set_thread( self.get_thread() )219 return window220#------------------------------------------------------------------------------221 def get_classname(self):222 """223 @rtype: str224 @return: Window class name.225 @raise WindowsError: An error occured while processing this request.226 """227 return win32.GetClassName( self.get_handle() )228 def get_style(self):229 """230 @rtype: int231 @return: Window style mask.232 @raise WindowsError: An error occured while processing this request.233 """234 return win32.GetWindowLongPtr( self.get_handle(), win32.GWL_STYLE )235 def get_extended_style(self):236 """237 @rtype: int238 @return: Window extended style mask.239 @raise WindowsError: An error occured while processing this request.240 """241 return win32.GetWindowLongPtr( self.get_handle(), win32.GWL_EXSTYLE )242 def get_text(self):243 """244 @see: L{set_text}245 @rtype: str246 @return: Window text (caption) on success, C{None} on error.247 """248 try:249 return win32.GetWindowText( self.get_handle() )250 except WindowsError:251 return None252 def set_text(self, text):253 """254 Set the window text (caption).255 @see: L{get_text}256 @type text: str257 @param text: New window text.258 @raise WindowsError: An error occured while processing this request.259 """260 win32.SetWindowText( self.get_handle(), text )261 def get_placement(self):262 """263 Retrieve the window placement in the desktop.264 @see: L{set_placement}265 @rtype: L{win32.WindowPlacement}266 @return: Window placement in the desktop.267 @raise WindowsError: An error occured while processing this request.268 """269 return win32.GetWindowPlacement( self.get_handle() )270 def set_placement(self, placement):271 """272 Set the window placement in the desktop.273 @see: L{get_placement}274 @type placement: L{win32.WindowPlacement}275 @param placement: Window placement in the desktop.276 @raise WindowsError: An error occured while processing this request.277 """278 win32.SetWindowPlacement( self.get_handle(), placement )279 def get_screen_rect(self):280 """281 Get the window coordinates in the desktop.282 @rtype: L{win32.Rect}283 @return: Rectangle occupied by the window in the desktop.284 @raise WindowsError: An error occured while processing this request.285 """286 return win32.GetWindowRect( self.get_handle() )287 def get_client_rect(self):288 """289 Get the window's client area coordinates in the desktop.290 @rtype: L{win32.Rect}291 @return: Rectangle occupied by the window's client area in the desktop.292 @raise WindowsError: An error occured while processing this request.293 """294 cr = win32.GetClientRect( self.get_handle() )295 cr.left, cr.top = self.client_to_screen(cr.left, cr.top)296 cr.right, cr.bottom = self.client_to_screen(cr.right, cr.bottom)297 return cr298 # XXX TODO299 # * properties x, y, width, height300 # * properties left, top, right, bottom301 process = property(get_process, set_process, doc="")302 thread = property(get_thread, set_thread, doc="")303 classname = property(get_classname, doc="")304 style = property(get_style, doc="")305 exstyle = property(get_extended_style, doc="")306 text = property(get_text, set_text, doc="")307 placement = property(get_placement, set_placement, doc="")308#------------------------------------------------------------------------------309 def client_to_screen(self, x, y):310 """311 Translates window client coordinates to screen coordinates.312 @note: This is a simplified interface to some of the functionality of313 the L{win32.Point} class.314 @see: {win32.Point.client_to_screen}315 @type x: int316 @param x: Horizontal coordinate.317 @type y: int318 @param y: Vertical coordinate.319 @rtype: tuple( int, int )320 @return: Translated coordinates in a tuple (x, y).321 @raise WindowsError: An error occured while processing this request.322 """323 return tuple( win32.ClientToScreen( self.get_handle(), (x, y) ) )324 def screen_to_client(self, x, y):325 """326 Translates window screen coordinates to client coordinates.327 @note: This is a simplified interface to some of the functionality of328 the L{win32.Point} class.329 @see: {win32.Point.screen_to_client}330 @type x: int331 @param x: Horizontal coordinate.332 @type y: int333 @param y: Vertical coordinate.334 @rtype: tuple( int, int )335 @return: Translated coordinates in a tuple (x, y).336 @raise WindowsError: An error occured while processing this request.337 """338 return tuple( win32.ScreenToClient( self.get_handle(), (x, y) ) )339#------------------------------------------------------------------------------340 def get_parent(self):341 """342 @see: L{get_children}343 @rtype: L{Window} or None344 @return: Parent window. Returns C{None} if the window has no parent.345 @raise WindowsError: An error occured while processing this request.346 """347 hWnd = win32.GetParent( self.get_handle() )348 if hWnd:349 return self.__get_window(hWnd)350 def get_children(self):351 """352 @see: L{get_parent}353 @rtype: list( L{Window} )354 @return: List of child windows.355 @raise WindowsError: An error occured while processing this request.356 """357 return [358 self.__get_window(hWnd) \359 for hWnd in win32.EnumChildWindows( self.get_handle() )360 ]361 def get_tree(self):362 """363 @see: L{get_root}364 @rtype: dict( L{Window} S{->} dict( ... ) )365 @return: Dictionary of dictionaries forming a tree of child windows.366 @raise WindowsError: An error occured while processing this request.367 """368 subtree = dict()369 for aWindow in self.get_children():370 subtree[ aWindow ] = aWindow.get_tree()371 return subtree372 def get_root(self):373 """374 @see: L{get_tree}375 @rtype: L{Window}376 @return: If this is a child window, return the top-level window it377 belongs to.378 If this window is already a top-level window, returns itself.379 @raise WindowsError: An error occured while processing this request.380 """381 hWnd = self.get_handle()382 history = set()383 hPrevWnd = hWnd384 while hWnd and hWnd not in history:385 history.add(hWnd)386 hPrevWnd = hWnd387 hWnd = win32.GetParent(hWnd)388 if hWnd in history:389 # See: https://docs.google.com/View?id=dfqd62nk_228h28szgz390 return self391 if hPrevWnd != self.get_handle():392 return self.__get_window(hPrevWnd)393 return self394 def get_child_at(self, x, y, bAllowTransparency = True):395 """396 Get the child window located at the given coordinates. If no such397 window exists an exception is raised.398 @see: L{get_children}399 @type x: int400 @param x: Horizontal coordinate.401 @type y: int402 @param y: Vertical coordinate.403 @type bAllowTransparency: bool404 @param bAllowTransparency: If C{True} transparent areas in windows are405 ignored, returning the window behind them. If C{False} transparent406 areas are treated just like any other area.407 @rtype: L{Window}408 @return: Child window at the requested position, or C{None} if there409 is no window at those coordinates.410 """411 try:412 if bAllowTransparency:413 hWnd = win32.RealChildWindowFromPoint( self.get_handle(), (x, y) )414 else:415 hWnd = win32.ChildWindowFromPoint( self.get_handle(), (x, y) )416 if hWnd:417 return self.__get_window(hWnd)418 except WindowsError:419 pass420 return None421#------------------------------------------------------------------------------422 def is_valid(self):423 """424 @rtype: bool425 @return: C{True} if the window handle is still valid.426 """427 return win32.IsWindow( self.get_handle() )428 def is_visible(self):429 """430 @see: {show}, {hide}431 @rtype: bool432 @return: C{True} if the window is in a visible state.433 """434 return win32.IsWindowVisible( self.get_handle() )435 def is_enabled(self):436 """437 @see: {enable}, {disable}438 @rtype: bool439 @return: C{True} if the window is in an enabled state.440 """441 return win32.IsWindowEnabled( self.get_handle() )442 def is_maximized(self):443 """444 @see: L{maximize}445 @rtype: bool446 @return: C{True} if the window is maximized.447 """448 return win32.IsZoomed( self.get_handle() )449 def is_minimized(self):450 """451 @see: L{minimize}452 @rtype: bool453 @return: C{True} if the window is minimized.454 """455 return win32.IsIconic( self.get_handle() )456 def is_child(self):457 """458 @see: L{get_parent}459 @rtype: bool460 @return: C{True} if the window is a child window.461 """462 return win32.IsChild( self.get_handle() )463 is_zoomed = is_maximized464 is_iconic = is_minimized465#------------------------------------------------------------------------------466 def enable(self):467 """468 Enable the user input for the window.469 @see: L{disable}470 @raise WindowsError: An error occured while processing this request.471 """472 win32.EnableWindow( self.get_handle(), True )473 def disable(self):474 """475 Disable the user input for the window.476 @see: L{enable}477 @raise WindowsError: An error occured while processing this request.478 """479 win32.EnableWindow( self.get_handle(), False )480 def show(self, bAsync = True):481 """482 Make the window visible.483 @see: L{hide}484 @type bAsync: bool485 @param bAsync: Perform the request asynchronously.486 @raise WindowsError: An error occured while processing this request.487 """488 if bAsync:489 win32.ShowWindowAsync( self.get_handle(), win32.SW_SHOW )490 else:491 win32.ShowWindow( self.get_handle(), win32.SW_SHOW )492 def hide(self, bAsync = True):493 """494 Make the window invisible.495 @see: L{show}496 @type bAsync: bool497 @param bAsync: Perform the request asynchronously.498 @raise WindowsError: An error occured while processing this request.499 """500 if bAsync:501 win32.ShowWindowAsync( self.get_handle(), win32.SW_HIDE )502 else:503 win32.ShowWindow( self.get_handle(), win32.SW_HIDE )504 def maximize(self, bAsync = True):505 """506 Maximize the window.507 @see: L{minimize}, L{restore}508 @type bAsync: bool509 @param bAsync: Perform the request asynchronously.510 @raise WindowsError: An error occured while processing this request.511 """512 if bAsync:513 win32.ShowWindowAsync( self.get_handle(), win32.SW_MAXIMIZE )514 else:515 win32.ShowWindow( self.get_handle(), win32.SW_MAXIMIZE )516 def minimize(self, bAsync = True):517 """518 Minimize the window.519 @see: L{maximize}, L{restore}520 @type bAsync: bool521 @param bAsync: Perform the request asynchronously.522 @raise WindowsError: An error occured while processing this request.523 """524 if bAsync:525 win32.ShowWindowAsync( self.get_handle(), win32.SW_MINIMIZE )526 else:527 win32.ShowWindow( self.get_handle(), win32.SW_MINIMIZE )528 def restore(self, bAsync = True):529 """530 Unmaximize and unminimize the window.531 @see: L{maximize}, L{minimize}532 @type bAsync: bool533 @param bAsync: Perform the request asynchronously.534 @raise WindowsError: An error occured while processing this request.535 """536 if bAsync:537 win32.ShowWindowAsync( self.get_handle(), win32.SW_RESTORE )538 else:539 win32.ShowWindow( self.get_handle(), win32.SW_RESTORE )540 def move(self, x = None, y = None, width = None, height = None,541 bRepaint = True):542 """543 Moves and/or resizes the window.544 @note: This is request is performed syncronously.545 @type x: int546 @param x: (Optional) New horizontal coordinate.547 @type y: int548 @param y: (Optional) New vertical coordinate.549 @type width: int550 @param width: (Optional) Desired window width.551 @type height: int552 @param height: (Optional) Desired window height.553 @type bRepaint: bool554 @param bRepaint:555 (Optional) C{True} if the window should be redrawn afterwards.556 @raise WindowsError: An error occured while processing this request.557 """558 if None in (x, y, width, height):559 rect = self.get_screen_rect()560 if x is None:561 x = rect.left562 if y is None:563 y = rect.top564 if width is None:565 width = rect.right - rect.left566 if height is None:567 height = rect.bottom - rect.top568 win32.MoveWindow(self.get_handle(), x, y, width, height, bRepaint)569 def kill(self):570 """571 Signals the program to quit.572 @note: This is an asyncronous request.573 @raise WindowsError: An error occured while processing this request.574 """575 self.post(win32.WM_QUIT)576 def send(self, uMsg, wParam = None, lParam = None, dwTimeout = None):577 """578 Send a low-level window message syncronically.579 @type uMsg: int580 @param uMsg: Message code.581 @param wParam:582 The type and meaning of this parameter depends on the message.583 @param lParam:584 The type and meaning of this parameter depends on the message.585 @param dwTimeout: Optional timeout for the operation.586 Use C{None} to wait indefinitely.587 @rtype: int588 @return: The meaning of the return value depends on the window message.589 Typically a value of C{0} means an error occured. You can get the590 error code by calling L{win32.GetLastError}.591 """592 if dwTimeout is None:593 return win32.SendMessage(self.get_handle(), uMsg, wParam, lParam)594 return win32.SendMessageTimeout(595 self.get_handle(), uMsg, wParam, lParam,596 win32.SMTO_ABORTIFHUNG | win32.SMTO_ERRORONEXIT, dwTimeout)597 def post(self, uMsg, wParam = None, lParam = None):598 """599 Post a low-level window message asyncronically.600 @type uMsg: int601 @param uMsg: Message code.602 @param wParam:603 The type and meaning of this parameter depends on the message.604 @param lParam:605 The type and meaning of this parameter depends on the message.606 @raise WindowsError: An error occured while sending the message.607 """...
run-test.py
Source:run-test.py
...99 nftables.set_echo_output(False)100 out = do_command(list_ruleset)101 nftables.set_echo_output(echo)102 return out103def get_handle(output, search):104 try:105 for item in output["nftables"]:106 if "add" in item:107 data = item["add"]108 elif "insert" in item:109 data = item["insert"]110 else:111 data = item112 k = list(search.keys())[0]113 if not k in data:114 continue115 found = True116 for key in list(search[k].keys()):117 if key == "handle":118 continue119 if not key in data[k] or search[k][key] != data[k][key]:120 found = False121 break122 if not found:123 continue124 return data[k]["handle"]125 except Exception as e:126 exit_dump(e, output)127# single commands first128do_flush()129print("Adding table t")130out = do_command(add_table)131handle = get_handle(out, add_table["add"])132out = do_list_ruleset()133handle_cmp = get_handle(out, add_table["add"])134if handle != handle_cmp:135 exit_err("handle mismatch!")136add_table["add"]["table"]["handle"] = handle137print("Adding chain c")138out = do_command(add_chain)139handle = get_handle(out, add_chain["add"])140out = do_list_ruleset()141handle_cmp = get_handle(out, add_chain["add"])142if handle != handle_cmp:143 exit_err("handle mismatch!")144add_chain["add"]["chain"]["handle"] = handle145print("Adding set s")146out = do_command(add_set)147handle = get_handle(out, add_set["add"])148out = do_list_ruleset()149handle_cmp = get_handle(out, add_set["add"])150if handle != handle_cmp:151 exit_err("handle mismatch!")152add_set["add"]["set"]["handle"] = handle153print("Adding rule")154out = do_command(add_rule)155handle = get_handle(out, add_rule["add"])156out = do_list_ruleset()157handle_cmp = get_handle(out, add_rule["add"])158if handle != handle_cmp:159 exit_err("handle mismatch!")160add_rule["add"]["rule"]["handle"] = handle161print("Adding counter")162out = do_command(add_counter)163handle = get_handle(out, add_counter["add"])164out = do_list_ruleset()165handle_cmp = get_handle(out, add_counter["add"])166if handle != handle_cmp:167 exit_err("handle mismatch!")168add_counter["add"]["counter"]["handle"] = handle169print("Adding quota")170out = do_command(add_quota)171handle = get_handle(out, add_quota["add"])172out = do_list_ruleset()173handle_cmp = get_handle(out, add_quota["add"])174if handle != handle_cmp:175 exit_err("handle mismatch!")176add_quota["add"]["quota"]["handle"] = handle177# adjust names and add items again178# Note: Handles are per-table, hence add renamed objects to first table179# to make sure assigned handle differs from first run.180add_table["add"]["table"]["name"] = "t2"181add_chain["add"]["chain"]["name"] = "c2"182add_set["add"]["set"]["name"] = "s2"183add_counter["add"]["counter"]["name"] = "c2"184add_quota["add"]["quota"]["name"] = "q2"185print("Adding table t2")186out = do_command(add_table)187handle = get_handle(out, add_table["add"])188if handle == add_table["add"]["table"]["handle"]:189 exit_err("handle not changed in re-added table!")190print("Adding chain c2")191out = do_command(add_chain)192handle = get_handle(out, add_chain["add"])193if handle == add_chain["add"]["chain"]["handle"]:194 exit_err("handle not changed in re-added chain!")195print("Adding set s2")196out = do_command(add_set)197handle = get_handle(out, add_set["add"])198if handle == add_set["add"]["set"]["handle"]:199 exit_err("handle not changed in re-added set!")200print("Adding rule again")201out = do_command(add_rule)202handle = get_handle(out, add_rule["add"])203if handle == add_rule["add"]["rule"]["handle"]:204 exit_err("handle not changed in re-added rule!")205print("Adding counter c2")206out = do_command(add_counter)207handle = get_handle(out, add_counter["add"])208if handle == add_counter["add"]["counter"]["handle"]:209 exit_err("handle not changed in re-added counter!")210print("Adding quota q2")211out = do_command(add_quota)212handle = get_handle(out, add_quota["add"])213if handle == add_quota["add"]["quota"]["handle"]:214 exit_err("handle not changed in re-added quota!")215# now multiple commands216# reset name changes again217add_table["add"]["table"]["name"] = "t"218add_chain["add"]["chain"]["name"] = "c"219add_set["add"]["set"]["name"] = "s"220add_counter["add"]["counter"]["name"] = "c"221add_quota["add"]["quota"]["name"] = "q"222do_flush()223print("doing multi add")224add_multi = [ add_table, add_chain, add_set, add_rule ]225out = do_command(add_multi)226thandle = get_handle(out, add_table["add"])227chandle = get_handle(out, add_chain["add"])228shandle = get_handle(out, add_set["add"])229rhandle = get_handle(out, add_rule["add"])230out = do_list_ruleset()231if thandle != get_handle(out, add_table["add"]):232 exit_err("table handle mismatch!")233if chandle != get_handle(out, add_chain["add"]):234 exit_err("chain handle mismatch!")235if shandle != get_handle(out, add_set["add"]):236 exit_err("set handle mismatch!")237if rhandle != get_handle(out, add_rule["add"]):...
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!