@@ -55,14 +55,14 @@ class Search extends Block
55
55
*
56
56
* @var string
57
57
*/
58
- protected $ searchListItems = './/div[@id="search_autocomplete"]//li ' ;
58
+ private $ searchListItems = './/div[@id="search_autocomplete"]//li ' ;
59
59
60
60
/**
61
61
* Locator value for body with aria-busy attribute.
62
62
*
63
63
* @var string
64
64
*/
65
- protected $ selectorAriaBusy = './/body[@aria-busy="false"] ' ;
65
+ private $ selectorAriaBusy = './/body[@aria-busy="false"] ' ;
66
66
67
67
/**
68
68
* Perform search by a keyword.
@@ -87,16 +87,25 @@ public function search($keyword)
87
87
public function fillSearch ($ text )
88
88
{
89
89
$ this ->_rootElement ->find ($ this ->searchInput )->setValue ($ text );
90
- $ searchListItems = $ this ->searchListItems ;
91
- $ selectorAriaBusy = $ this ->selectorAriaBusy ;
92
- $ browser = $ this ->browser ;
93
- $ browser ->waitUntil (
94
- function () use ($ searchListItems , $ browser , $ selectorAriaBusy ) {
95
- $ count = count ($ this ->_rootElement ->getElements ($ searchListItems , Locator::SELECTOR_XPATH ));
90
+ $ this ->waitUntilSearchPrepared ();
91
+ }
92
+
93
+ /**
94
+ * Wait until "Suggest Search" block will be prepared.
95
+ *
96
+ * @return bool
97
+ */
98
+ public function waitUntilSearchPrepared ()
99
+ {
100
+ $ this ->browser ->waitUntil (
101
+ function () {
102
+ $ count = count ($ this ->_rootElement ->getElements ($ this ->searchListItems , Locator::SELECTOR_XPATH ));
96
103
sleep (0.2 );
97
- return $ browser ->find ($ selectorAriaBusy , Locator::SELECTOR_XPATH )->isVisible () &&
98
- count ($ this ->_rootElement ->getElements ($ searchListItems , Locator::SELECTOR_XPATH )) == $ count
99
- ? true : null ;
104
+ $ newCount = count ($ this ->_rootElement ->getElements ($ this ->searchListItems , Locator::SELECTOR_XPATH ));
105
+ return $ this ->browser ->find ($ this ->selectorAriaBusy , Locator::SELECTOR_XPATH )->isVisible ()
106
+ && ($ newCount == $ count )
107
+ ? true
108
+ : null ;
100
109
}
101
110
);
102
111
}
@@ -144,7 +153,6 @@ function () use ($rootElement, $searchAutocomplete) {
144
153
public function clickSuggestedText ($ text )
145
154
{
146
155
$ searchAutocomplete = sprintf ($ this ->searchAutocomplete , $ text );
147
- $ this ->waitForElementVisible ($ searchAutocomplete , Locator::SELECTOR_XPATH );
148
156
$ this ->_rootElement ->find ($ searchAutocomplete , Locator::SELECTOR_XPATH )->click ();
149
157
}
150
158
}
0 commit comments