1 # Copyright 2013 The Chromium Authors. All rights reserved. 2 # Use of this source code is governed by a BSD-style license that can be 3 # found in the LICENSE file. 4 5 from command_executor import Command 6 7 8 class WebElement(object): 9 """Represents an HTML element.""" 10 def __init__(self, chromedriver, id_): 11 self._chromedriver = chromedriver 12 self._id = id_ 13 14 def _Execute(self, command, params=None): 15 if params is None: 16 params = {} 17 params['id'] = self._id; 18 return self._chromedriver.ExecuteCommand(command, params) 19 20 def FindElement(self, strategy, target): 21 return self._Execute( 22 Command.FIND_CHILD_ELEMENT, {'using': strategy, 'value': target}) 23 24 def FindElements(self, strategy, target): 25 return self._Execute( 26 Command.FIND_CHILD_ELEMENTS, {'using': strategy, 'value': target}) 27 28 def GetText(self): 29 return self._Execute(Command.GET_ELEMENT_TEXT) 30 31 def HoverOver(self): 32 self._Execute(Command.HOVER_OVER_ELEMENT) 33 34 def Click(self): 35 self._Execute(Command.CLICK_ELEMENT) 36 37 def SingleTap(self): 38 self._Execute(Command.TOUCH_SINGLE_TAP) 39 40 def Clear(self): 41 self._Execute(Command.CLEAR_ELEMENT) 42 43 def SendKeys(self, *values): 44 typing = [] 45 for value in values: 46 if isinstance(value, int): 47 value = str(value) 48 for i in range(len(value)): 49 typing.append(value[i]) 50 self._Execute(Command.SEND_KEYS_TO_ELEMENT, {'value': typing}) 51 52 def GetLocation(self): 53 return self._Execute(Command.GET_ELEMENT_LOCATION) 54