Home | History | Annotate | Download | only in client
      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