Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(220)

Side by Side Diff: chrome/test/webdriver/commands/find_element_commands.cc

Issue 23526047: Delete old chromedriver code, and remove mongoose webserver. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2011 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 #include "chrome/test/webdriver/commands/find_element_commands.h"
6
7 #include "base/values.h"
8 #include "chrome/test/webdriver/commands/response.h"
9 #include "chrome/test/webdriver/webdriver_element_id.h"
10 #include "chrome/test/webdriver/webdriver_error.h"
11 #include "chrome/test/webdriver/webdriver_session.h"
12
13 namespace webdriver {
14
15 FindElementCommand::FindElementCommand(
16 const std::vector<std::string>& path_segments,
17 const DictionaryValue* const parameters,
18 const bool find_one_element)
19 : WebDriverCommand(path_segments, parameters),
20 find_one_element_(find_one_element) {}
21
22 FindElementCommand::~FindElementCommand() {}
23
24 bool FindElementCommand::DoesPost() {
25 return true;
26 }
27
28 void FindElementCommand::ExecutePost(Response* const response) {
29 std::string locator, query;
30 if (!GetStringParameter("using", &locator) ||
31 !GetStringParameter("value", &query)) {
32 response->SetError(new Error(
33 kBadRequest,
34 "Request is missing required 'using' and/or 'value' data"));
35 return;
36 }
37
38 if (locator == "class name") {
39 locator = LocatorType::kClassName;
40 } else if (locator == "css selector") {
41 locator = LocatorType::kCss;
42 } else if (locator == "link text") {
43 locator = LocatorType::kLinkText;
44 } else if (locator == "partial link text") {
45 locator = LocatorType::kPartialLinkText;
46 } else if (locator == "tag name") {
47 locator = LocatorType::kTagName;
48 }
49 // The other locators do not need conversion. If the client supplied an
50 // invalid locator, let it fail in the atom.
51
52 // Searching under a custom root if the URL pattern is
53 // "/session/$session/element/$id/element(s)"
54 ElementId root_element(GetPathVariable(4));
55
56 if (find_one_element_) {
57 ElementId element;
58 Error* error = session_->FindElement(
59 session_->current_target(), root_element, locator, query, &element);
60 if (error) {
61 response->SetError(error);
62 return;
63 }
64 response->SetValue(element.ToValue());
65 } else {
66 std::vector<ElementId> elements;
67 Error* error = session_->FindElements(
68 session_->current_target(), root_element, locator, query, &elements);
69 if (error) {
70 response->SetError(error);
71 return;
72 }
73 ListValue* element_list = new ListValue();
74 for (size_t i = 0; i < elements.size(); ++i)
75 element_list->Append(elements[i].ToValue());
76 response->SetValue(element_list);
77 }
78 response->SetStatus(kSuccess);
79 }
80
81 } // namespace webdriver
OLDNEW
« no previous file with comments | « chrome/test/webdriver/commands/find_element_commands.h ('k') | chrome/test/webdriver/commands/html5_location_commands.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698