1 // Copyright (c) 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 #ifndef CHROME_TEST_CHROMEDRIVER_ELEMENT_COMMANDS_H_ 6 #define CHROME_TEST_CHROMEDRIVER_ELEMENT_COMMANDS_H_ 7 8 #include <string> 9 10 #include "base/callback_forward.h" 11 #include "base/memory/scoped_ptr.h" 12 13 namespace base { 14 class DictionaryValue; 15 class Value; 16 } 17 18 struct Session; 19 class Status; 20 class WebView; 21 22 typedef base::Callback<Status( 23 Session* session, 24 WebView* web_view, 25 const std::string&, 26 const base::DictionaryValue&, 27 scoped_ptr<base::Value>*)> ElementCommand; 28 29 // Execute a command on a specific element. 30 Status ExecuteElementCommand( 31 const ElementCommand& command, 32 Session* session, 33 WebView* web_view, 34 const base::DictionaryValue& params, 35 scoped_ptr<base::Value>* value); 36 37 // Search for an element on the page, starting from the given element. 38 Status ExecuteFindChildElement( 39 int interval_ms, 40 Session* session, 41 WebView* web_view, 42 const std::string& element_id, 43 const base::DictionaryValue& params, 44 scoped_ptr<base::Value>* value); 45 46 // Search for multiple elements on the page, starting from the given element. 47 Status ExecuteFindChildElements( 48 int interval_ms, 49 Session* session, 50 WebView* web_view, 51 const std::string& element_id, 52 const base::DictionaryValue& params, 53 scoped_ptr<base::Value>* value); 54 55 // Move the mouse to the given element. 56 Status ExecuteHoverOverElement( 57 Session* session, 58 WebView* web_view, 59 const std::string& element_id, 60 const base::DictionaryValue& params, 61 scoped_ptr<base::Value>* value); 62 63 // Click on the element. 64 Status ExecuteClickElement( 65 Session* session, 66 WebView* web_view, 67 const std::string& element_id, 68 const base::DictionaryValue& params, 69 scoped_ptr<base::Value>* value); 70 71 // Touch click on the element. 72 Status ExecuteTouchSingleTap( 73 Session* session, 74 WebView* web_view, 75 const std::string& element_id, 76 const base::DictionaryValue& params, 77 scoped_ptr<base::Value>* value); 78 79 // Touch flick starting on the element. 80 Status ExecuteFlick( 81 Session* session, 82 WebView* web_view, 83 const std::string& element_id, 84 const base::DictionaryValue& params, 85 scoped_ptr<base::Value>* value); 86 87 // Clear a TEXTAREA or text INPUT element's value. 88 Status ExecuteClearElement( 89 Session* session, 90 WebView* web_view, 91 const std::string& element_id, 92 const base::DictionaryValue& params, 93 scoped_ptr<base::Value>* value); 94 95 // Send a sequence of key strokes to an element. 96 Status ExecuteSendKeysToElement( 97 Session* session, 98 WebView* web_view, 99 const std::string& element_id, 100 const base::DictionaryValue& params, 101 scoped_ptr<base::Value>* value); 102 103 // Submit a form element. 104 Status ExecuteSubmitElement( 105 Session* session, 106 WebView* web_view, 107 const std::string& element_id, 108 const base::DictionaryValue& params, 109 scoped_ptr<base::Value>* value); 110 111 // Returns the text of a given element. 112 Status ExecuteGetElementText( 113 Session* session, 114 WebView* web_view, 115 const std::string& element_id, 116 const base::DictionaryValue& params, 117 scoped_ptr<base::Value>* value); 118 119 // Returns the value of a given element. 120 Status ExecuteGetElementValue( 121 Session* session, 122 WebView* web_view, 123 const std::string& element_id, 124 const base::DictionaryValue& params, 125 scoped_ptr<base::Value>* value); 126 127 // Returns the lower case tag name of a given element. 128 Status ExecuteGetElementTagName( 129 Session* session, 130 WebView* web_view, 131 const std::string& element_id, 132 const base::DictionaryValue& params, 133 scoped_ptr<base::Value>* value); 134 135 Status ExecuteIsElementSelected( 136 Session* session, 137 WebView* web_view, 138 const std::string& element_id, 139 const base::DictionaryValue& params, 140 scoped_ptr<base::Value>* value); 141 142 Status ExecuteIsElementEnabled( 143 Session* session, 144 WebView* web_view, 145 const std::string& element_id, 146 const base::DictionaryValue& params, 147 scoped_ptr<base::Value>* value); 148 149 Status ExecuteIsElementDisplayed( 150 Session* session, 151 WebView* web_view, 152 const std::string& element_id, 153 const base::DictionaryValue& params, 154 scoped_ptr<base::Value>* value); 155 156 // Returns the location of a given element in page coordinates. 157 Status ExecuteGetElementLocation( 158 Session* session, 159 WebView* web_view, 160 const std::string& element_id, 161 const base::DictionaryValue& params, 162 scoped_ptr<base::Value>* value); 163 164 // Returns the location of a given element in client coordinates, after 165 // scrolling it into view. 166 Status ExecuteGetElementLocationOnceScrolledIntoView( 167 Session* session, 168 WebView* web_view, 169 const std::string& element_id, 170 const base::DictionaryValue& params, 171 scoped_ptr<base::Value>* value); 172 173 Status ExecuteGetElementSize( 174 Session* session, 175 WebView* web_view, 176 const std::string& element_id, 177 const base::DictionaryValue& params, 178 scoped_ptr<base::Value>* value); 179 180 Status ExecuteGetElementAttribute( 181 Session* session, 182 WebView* web_view, 183 const std::string& element_id, 184 const base::DictionaryValue& params, 185 scoped_ptr<base::Value>* value); 186 187 // Returns the effective style for a given property of the specified element. 188 Status ExecuteGetElementValueOfCSSProperty( 189 Session* session, 190 WebView* web_view, 191 const std::string& element_id, 192 const base::DictionaryValue& params, 193 scoped_ptr<base::Value>* value); 194 195 // Returns whether the two given elements are equivalent. 196 Status ExecuteElementEquals( 197 Session* session, 198 WebView* web_view, 199 const std::string& element_id, 200 const base::DictionaryValue& params, 201 scoped_ptr<base::Value>* value); 202 203 #endif // CHROME_TEST_CHROMEDRIVER_ELEMENT_COMMANDS_H_ 204