| // Copyright 2018 The Chromium Authors |
| // 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_ |
| |
| #import <Foundation/Foundation.h> |
| |
| #include <string> |
| |
| // 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. |
| @interface ElementSelector : NSObject |
| |
| // The javascript to invoke on a page to retrieve the element. |
| @property(nonatomic, readonly, copy) NSString* selectorScript; |
| |
| // A human readable description of the query. |
| @property(nonatomic, readonly, copy) NSString* selectorDescription; |
| |
| // Returns an ElementSelector to retrieve an element by ID. |
| + (ElementSelector*)selectorWithElementID:(const std::string&)elementID; |
| |
| // 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. |
| + (ElementSelector*)selectorWithElementID:(const std::string&)elementID |
| inFrameWithIndex:(int)frameIndex; |
| |
| // Returns an ElementSelector to retrieve an element by a CSS selector. |
| + (ElementSelector*)selectorWithCSSSelector:(const std::string&)selector; |
| |
| // Returns an ElementSelector to retrieve an element by a xpath query. |
| + (ElementSelector*)selectorWithXPathQuery:(const std::string&)query; |
| |
| // Returns an ElementSelector to retrieve an element described by |
| // `selectorDescription` using `selectorScript`. |
| + (ElementSelector*)selectorWithScript:(NSString*)selectorScript |
| selectorDescription:(NSString*)selectorDescription; |
| |
| - (instancetype)init NS_UNAVAILABLE; |
| |
| @end |
| |
| #endif // IOS_WEB_PUBLIC_TEST_ELEMENT_SELECTOR_H_ |