Neste segmento do tutorial, vamos discutir javascriptexecutor em selênio de maneira detalhada e todas as operações prováveis poderiam ser realizadas usando javascriptexecutor em selênio em termos de WebAutomation.
O que é javascriptexecutor em selênio
Na Biblioteca Selenium javascriptexecutor é uma interface que está sendo implementada em várias classes, como ChromeDriver, FirefoxDriver, RemoteWebDriver, EdgeDriver, EventFiringWebDriver, InternetExplorerDriver etc. para suportar diferentes operações relacionadas a Javascript para os respectivos drivers de navegador.
Tipos de Java Script no Selenium e seus métodos:
Existem dois tipos diferentes de métodos JavaScript disponíveis:
Diferença entre executeAsyncScript vs executeScript:
executeAsyncScript : Este tipo de executor de script java é usado para executar um código JavaScript assíncrono no contexto do quadro ou janela atualmente selecionado.
executeScript: Este tipo de executor de script Java que basicamente executa código JavaScript síncrono no contexto do quadro ou janela atualmente selecionado.
Operação que pode ser realizada usando o executor javascript no selênio:
Existem várias operações da Web cruciais que são alcançadas executando Javascript no driver do navegador para atingir determinada operação, como:
Vamos discutir todas as operações mencionadas acima:
Clique em javascript de selênio
Podemos realizar a operação de clique no Selenium com a operação Javascript na abordagem abaixo:
public void jsClick() { elemento WebElement = driver.findElement(By.xpath("Xpath_OF_Element")); JavascriptExecutor jscriptExecutor = (JavascriptExecutor) driver; jscriptExecutor.executeScript("arguments[0].click();", elemento); }
Selenium javascript inserir texto
Podemos realizar a operação sendkeys no Selenium com a operação Javascript na abordagem abaixo:
public void jsSendKeys() { JavascriptExecutor jscriptExecutor = (JavascriptExecutor) driver; jscriptExecutor.executeScript("document.getElementById('id_of_the_element').value='ENTER_THE_TEXT_HERE';"); }
Caixa de seleção Selenium JavaScript
Poderíamos usar a opção verificado= true ou false dependendo dos casos de uso para realizar as operações CheckBox com Javascript no Selenium.
public void jsCheckBoxOps() { JavascriptExecutor jscriptExecutor = (JavascriptExecutor) driver; jscriptExecutor.executeScript("document.getElementById('id_of_the_element').checked=false;"); }
Geração de alerta Selenium javascript
Para gerar o alerta, precisamos usar “alerta ('ALERT_TEXT_TO_BE_SHOWN');”Durante a execução da operação com Javascript.
public void jsAlertGeneration() { JavascriptExecutor jscriptExecutor= (JavascriptExecutor) driver; jscriptExecutor.executeScript("alert('ALERT_TEXT_TO_BE_SHOWN');"); }
Página de atualização do Javascript do Selenium
Para atualizar uma página da web no Selenium com Javascript Executor, podemos usar history.go (0).
public void jsRefreshPage() { JavascriptExecutor jscriptExecutor= (JavascriptExecutor) driver; jscriptExecutor.executeScript("history.go(0)"); }
Selenium javascript para obter o texto interno da página da web
Para buscar todo o texto interno, podemos usar document.documentElement.innerText;
public String jsFetchInnerText() { JavascriptExecutor jscriptExecutor= (JavascriptExecutor) driver; return String.valueOf(jscriptExecutor.executeScript("return document.documentElement.innerText;"); }
Selenium javascript obter o título da página
Para retornar o título de uma página, podemos usar título do documento; junto com Javascript Executor no Selenium.
public String jsWebPageTitle() { JavascriptExecutor jscriptExecutor= (JavascriptExecutor) driver; return String.valueOf(jscriptExecutor.executeScript("return document.title;"); }
Selenium javascript para obter o domínio
Para obter o nome de domínio, podemos usar documento.domínio;
public String jsFetchDomain() { JavascriptExecutor jscriptExecutor= (JavascriptExecutor) driver; return String.valueOf(jscriptExecutor.executeScript("return document.domain;"); }
Selenium javascript para obter o URL de uma página da web
Para buscar a URL usando JavaScript Executor com Selenium, poderíamos usar documento.URL;
public String jsFetchURL() { JavascriptExecutor jscriptExecutor= (JavascriptExecutor) driver; return String.valueOf(jscriptExecutor.executeScript("return document.URL;"); }
Selenium javascript Rolando uma página da web
Podemos executar a rolagem de várias maneiras usando Javascript, duas das abordagens são mostradas abaixo no snippet de código, como:
public void scrollIntoView(By locator) { try { JavascriptExecutor executor = (JavascriptExecutor) driver; Elemento WebElement = driver.findElement(locator); executor.executeScript("arguments[0].scrollIntoView(true);", elemento); BASE_LOGGER .info("a operação scrollIntoView foi executada para o localizador : " + String.valueOf(element)); } catch (Exception e) { String exceptionData = e.getCause().getMessage(); BASE_LOGGER.error("Erro encontrado, por exemplo: " + exceptionData + " ao executar scrollIntoView no elemento: " + locator); } }
Também podemos especificar o valor de rolagem (quantidade de rolagem) como esta abordagem abaixo:
public void jsScroll() { JavascriptExecutor jscriptExecutor= (JavascriptExecutor) driver; jscriptExecutor.executeScript("window.scrollBy(0,1000)"); }
Selenium javascript para navegar para uma página diferente
Podemos navegar para uma página / tela diferente, fornecendo diretamente a localização do url no javascriptexecutor no Selenium.
public void pageNavigationWithJS() { JavascriptExecutor jscriptExecutor= (JavascriptExecutor) driver; jscriptExecutor.executeScript("window.location = 'PageURL_To_Navigate'"); }
Selenium javascript Para localizar e clicar em um elemento oculto
Poderíamos clicar diretamente no elemento oculto com o Javascript do back-end, embora o elemento não esteja visível, aqui está o snippet de código para o mesmo:
public void clickOnHiddenElement() { JavascriptExecutor jscriptExecutor= (JavascriptExecutor) driver; WebElement elemento oculto=driver.findElement(By.id("ID_OF_ELEMENT")); jscriptExecutor.executeScript("arguments[0].click();", hiddenElement); }
Conclusão:
Até agora, discutimos sobre o Javascript e várias operações a serem realizadas usando o executor Javascript no Selenium. Recomendamos que você consulte o tutorial completo do Selenium para obter uma melhor compreensão de todos os diferentes aspectos do mesmo. Na próxima série Segmentos de Tutoriais, discutiremos mais sobre o Automação de selênio Framework e outras tecnologias mais recentes para trabalhar com Selenium, e para crack qualquer entrevista avançada no Selenium que você pode fazer aqui.