| // Copyright 2018 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef IOS_WEB_PUBLIC_TEST_ELEMENT_SELECTOR_H_ |
| #define IOS_WEB_PUBLIC_TEST_ELEMENT_SELECTOR_H_ |
| |
| #include <string> |
| |
| namespace web { |
| namespace test { |
| |
| // An ElementSelector is used to generate the proper javascript to retrieve an |
| // element on a web page. It encapsulates the various means of finding an |
| // element and is intended to be passed around. |
| class ElementSelector { |
| public: |
| // Returns an ElementSelector to retrieve an element by ID. |
| static const ElementSelector ElementSelectorId(const std::string element_id); |
| |
| // Returns an ElementSelector to retrieve an element in iframe by ID. iframe |
| // is an immediate child of the main frame with the given index. The script of |
| // this selector will throw an exception if target iframe has a different |
| // origin from the main frame. |
| static const ElementSelector ElementSelectorIdInFrame( |
| const std::string element_id, |
| const int frame_index); |
| |
| // Returns an ElementSelector to retrieve an element by a CSS selector. |
| static const ElementSelector ElementSelectorCss( |
| const std::string css_selector); |
| |
| // Returns an ElementSelector to retrieve an element by a xpath query. |
| static const ElementSelector ElementSelectorXPath( |
| const std::string xpath_selector); |
| |
| ElementSelector(const ElementSelector& that) = default; |
| ElementSelector(ElementSelector&& that) = default; |
| ~ElementSelector() = default; |
| |
| // Returns the javascript to invoke on a page to retrieve the element. |
| const std::string GetSelectorScript() const; |
| |
| // Returns a human readable description of the query. |
| const std::string GetSelectorDescription() const; |
| |
| private: |
| ElementSelector(const std::string&& script, const std::string&& description); |
| |
| const std::string script_; |
| const std::string description_; |
| }; |
| |
| } // namespace test |
| } // namespace web |
| |
| #endif // IOS_WEB_PUBLIC_TEST_ELEMENT_SELECTOR_H_ |