2323import org .openqa .selenium .By ;
2424import org .openqa .selenium .JavascriptExecutor ;
2525import org .openqa .selenium .SearchContext ;
26- import org .openqa .selenium .WebDriver ;
2726import org .openqa .selenium .WebElement ;
28- import org .openqa .selenium .WrapsDriver ;
2927import org .openqa .selenium .internal .Require ;
3028import org .openqa .selenium .json .Json ;
3129import org .openqa .selenium .json .JsonException ;
@@ -205,7 +203,7 @@ private RelativeBy near(Object locator, int atMostDistanceInPixels) {
205203
206204 @ Override
207205 public List <WebElement > findElements (SearchContext context ) {
208- JavascriptExecutor js = extractJsExecutor (context );
206+ JavascriptExecutor js = getJavascriptExecutor (context );
209207
210208 @ SuppressWarnings ("unchecked" )
211209 List <WebElement > elements = (List <WebElement >) js .executeScript (FIND_ELEMENTS , asAtomLocatorParameter (this ));
@@ -230,23 +228,6 @@ private List<Map<String, Object>> amend(Map<String, Object> toAdd) {
230228 .build ();
231229 }
232230
233- private JavascriptExecutor extractJsExecutor (SearchContext context ) {
234- if (context instanceof JavascriptExecutor ) {
235- return (JavascriptExecutor ) context ;
236- }
237-
238- Object current = context ;
239- while (current instanceof WrapsDriver ) {
240- WebDriver driver = ((WrapsDriver ) context ).getWrappedDriver ();
241- if (driver instanceof JavascriptExecutor ) {
242- return (JavascriptExecutor ) driver ;
243- }
244- current = driver ;
245- }
246-
247- throw new IllegalArgumentException ("Cannot find elements, since the context cannot execute JS: " + context );
248- }
249-
250231 @ Override
251232 public Parameters getRemoteParameters () {
252233 return new Parameters (
0 commit comments