private function callFindElement($name, array $args)
{
$arr = explode('By', $name);
$call = $arr[0];
$by = count($arr) > 1 ? lcfirst($arr[1]) : '';
$valid = false;
switch ($call) {
case 'findElement':
case 'findElements':
if (method_exists('Nearsoft\\SeleniumClient\\By', $by)) {
$valid = true;
}
}
if (!$valid) {
throw new \Exception('Invalid magic call: ' . $name);
}
$method = new \ReflectionMethod('Nearsoft\\SeleniumClient\\By', $by);
$byArgs = array_splice($args, 0, $method->getNumberOfParameters());
array_unshift($args, $method->invokeArgs(null, $byArgs));
$element = call_user_func_array(array($this, $call), $args);
return $element;
}