xref: /plugin/combo/vendor/php-webdriver/webdriver/lib/WebDriverBy.php (revision 04fd306c7c155fa133ebb3669986875d65988276)
1*04fd306cSNickeau<?php
2*04fd306cSNickeau
3*04fd306cSNickeaunamespace Facebook\WebDriver;
4*04fd306cSNickeau
5*04fd306cSNickeau/**
6*04fd306cSNickeau * The basic 8 mechanisms supported by webdriver to locate a web element.
7*04fd306cSNickeau * ie. 'class name', 'css selector', 'id', 'name', 'link text',
8*04fd306cSNickeau *     'partial link text', 'tag name' and 'xpath'.
9*04fd306cSNickeau *
10*04fd306cSNickeau * @see WebDriver::findElement, WebDriverElement::findElement
11*04fd306cSNickeau */
12*04fd306cSNickeauclass WebDriverBy
13*04fd306cSNickeau{
14*04fd306cSNickeau    /**
15*04fd306cSNickeau     * @var string
16*04fd306cSNickeau     */
17*04fd306cSNickeau    private $mechanism;
18*04fd306cSNickeau    /**
19*04fd306cSNickeau     * @var string
20*04fd306cSNickeau     */
21*04fd306cSNickeau    private $value;
22*04fd306cSNickeau
23*04fd306cSNickeau    protected function __construct($mechanism, $value)
24*04fd306cSNickeau    {
25*04fd306cSNickeau        $this->mechanism = $mechanism;
26*04fd306cSNickeau        $this->value = $value;
27*04fd306cSNickeau    }
28*04fd306cSNickeau
29*04fd306cSNickeau    /**
30*04fd306cSNickeau     * @return string
31*04fd306cSNickeau     */
32*04fd306cSNickeau    public function getMechanism()
33*04fd306cSNickeau    {
34*04fd306cSNickeau        return $this->mechanism;
35*04fd306cSNickeau    }
36*04fd306cSNickeau
37*04fd306cSNickeau    /**
38*04fd306cSNickeau     * @return string
39*04fd306cSNickeau     */
40*04fd306cSNickeau    public function getValue()
41*04fd306cSNickeau    {
42*04fd306cSNickeau        return $this->value;
43*04fd306cSNickeau    }
44*04fd306cSNickeau
45*04fd306cSNickeau    /**
46*04fd306cSNickeau     * Locates elements whose class name contains the search value; compound class
47*04fd306cSNickeau     * names are not permitted.
48*04fd306cSNickeau     *
49*04fd306cSNickeau     * @param string $class_name
50*04fd306cSNickeau     * @return static
51*04fd306cSNickeau     */
52*04fd306cSNickeau    public static function className($class_name)
53*04fd306cSNickeau    {
54*04fd306cSNickeau        return new static('class name', $class_name);
55*04fd306cSNickeau    }
56*04fd306cSNickeau
57*04fd306cSNickeau    /**
58*04fd306cSNickeau     * Locates elements matching a CSS selector.
59*04fd306cSNickeau     *
60*04fd306cSNickeau     * @param string $css_selector
61*04fd306cSNickeau     * @return static
62*04fd306cSNickeau     */
63*04fd306cSNickeau    public static function cssSelector($css_selector)
64*04fd306cSNickeau    {
65*04fd306cSNickeau        return new static('css selector', $css_selector);
66*04fd306cSNickeau    }
67*04fd306cSNickeau
68*04fd306cSNickeau    /**
69*04fd306cSNickeau     * Locates elements whose ID attribute matches the search value.
70*04fd306cSNickeau     *
71*04fd306cSNickeau     * @param string $id
72*04fd306cSNickeau     * @return static
73*04fd306cSNickeau     */
74*04fd306cSNickeau    public static function id($id)
75*04fd306cSNickeau    {
76*04fd306cSNickeau        return new static('id', $id);
77*04fd306cSNickeau    }
78*04fd306cSNickeau
79*04fd306cSNickeau    /**
80*04fd306cSNickeau     * Locates elements whose NAME attribute matches the search value.
81*04fd306cSNickeau     *
82*04fd306cSNickeau     * @param string $name
83*04fd306cSNickeau     * @return static
84*04fd306cSNickeau     */
85*04fd306cSNickeau    public static function name($name)
86*04fd306cSNickeau    {
87*04fd306cSNickeau        return new static('name', $name);
88*04fd306cSNickeau    }
89*04fd306cSNickeau
90*04fd306cSNickeau    /**
91*04fd306cSNickeau     * Locates anchor elements whose visible text matches the search value.
92*04fd306cSNickeau     *
93*04fd306cSNickeau     * @param string $link_text
94*04fd306cSNickeau     * @return static
95*04fd306cSNickeau     */
96*04fd306cSNickeau    public static function linkText($link_text)
97*04fd306cSNickeau    {
98*04fd306cSNickeau        return new static('link text', $link_text);
99*04fd306cSNickeau    }
100*04fd306cSNickeau
101*04fd306cSNickeau    /**
102*04fd306cSNickeau     * Locates anchor elements whose visible text partially matches the search
103*04fd306cSNickeau     * value.
104*04fd306cSNickeau     *
105*04fd306cSNickeau     * @param string $partial_link_text
106*04fd306cSNickeau     * @return static
107*04fd306cSNickeau     */
108*04fd306cSNickeau    public static function partialLinkText($partial_link_text)
109*04fd306cSNickeau    {
110*04fd306cSNickeau        return new static('partial link text', $partial_link_text);
111*04fd306cSNickeau    }
112*04fd306cSNickeau
113*04fd306cSNickeau    /**
114*04fd306cSNickeau     * Locates elements whose tag name matches the search value.
115*04fd306cSNickeau     *
116*04fd306cSNickeau     * @param string $tag_name
117*04fd306cSNickeau     * @return static
118*04fd306cSNickeau     */
119*04fd306cSNickeau    public static function tagName($tag_name)
120*04fd306cSNickeau    {
121*04fd306cSNickeau        return new static('tag name', $tag_name);
122*04fd306cSNickeau    }
123*04fd306cSNickeau
124*04fd306cSNickeau    /**
125*04fd306cSNickeau     * Locates elements matching an XPath expression.
126*04fd306cSNickeau     *
127*04fd306cSNickeau     * @param string $xpath
128*04fd306cSNickeau     * @return static
129*04fd306cSNickeau     */
130*04fd306cSNickeau    public static function xpath($xpath)
131*04fd306cSNickeau    {
132*04fd306cSNickeau        return new static('xpath', $xpath);
133*04fd306cSNickeau    }
134*04fd306cSNickeau}
135