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
5from command_executor import Command
6
7
8class 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