Qual é a diferença entre estes
Webdriver.Close()
Webdriver.Quit()
Webdriver.Dispose()
Qual usar e quando?
selenium-webdriver
Puran Joshi
fonte
fonte
Respostas:
Esta é uma boa pergunta que eu já vi pessoas usarem Close () quando não deveriam. Procurei no código-fonte as ligações C # do Selenium Client e WebDriver e encontrei o seguinte.
webDriver.Close()
- Feche a janela do navegador em que o driver está focadowebDriver.Quit()
- Chamadas Dispose ()webDriver.Dispose()
Fecha todas as janelas do navegador e encerra a sessão com segurançaO código abaixo descartará o objeto do driver, encerrará a sessão e fechará todos os navegadores abertos durante um teste, independentemente de o teste falhar ou passar.
Em resumo, verifique se Quit () ou Dispose () é chamado antes de sair do programa e não use o método Close (), a menos que tenha certeza do que está fazendo.
Observe
que encontrei essa pergunta ao tentar descobrir um problema relacionado por que minhas VMs estavam ficando sem espaço no disco rígido. Acontece que uma exceção estava causando Quit () ou Dispose () a não ser chamado a cada execução, o que fazia com que a pasta appData preenchesse o disco rígido. Então, estávamos usando o método Quit () corretamente, mas o código estava inacessível. Resumo, verifique se todos os caminhos de código limparão seus objetos não gerenciados usando padrões seguros de exceção ou implementarão IDisposable
Também
no caso do RemoteDriver, chamar Quit () ou Dispose () também fechará a sessão no Selenium Server. Se a sessão não estiver fechada, os arquivos de log dessa sessão permanecerão na memória.
fonte
Quit()
é um redirecionamento paraDispose()
Close()
- É usado para fechar o navegador ou a página atualmente em foco.Quit()
- É usado para desligar a instância do driver da web ou destruir a instância do driver da web (Feche todas as janelas).Dispose()
- Não conheço esse método.fonte
Quit
eDispose
deverão ser sinônimos um para o outro. Em outras palavras,Quit
chamadasDispose
.driver.close
edriver.quit
são dois métodos diferentes para fechar a sessão do navegador no Selenium WebDriver. Compreender os dois e saber quando usar cada método é importante na execução do seu teste. Portanto, tentei lançar alguma luz sobre esses dois métodos.driver.close
- Este método fecha a janela do navegador na qual o foco está definido. Apesar do nome familiar para este método,WebDriver
se não implementar aAutoCloseable
interface de .driver.quit
- Esse método basicamente chamadriver.dispose
um método agora interno que, por sua vez, fecha todas as janelas do navegador e encerra a sessão do WebDriver normalmente.driver.dispose
- Como mencionado anteriormente, é um método interno do WebDriver que foi eliminado silenciosamente de acordo com outra resposta - É necessária a verificação. Esse método realmente não possui um caso de uso em um fluxo de trabalho de teste normal, pois um dos métodos anteriores deve funcionar na maioria dos casos de uso.Explicação: Caso de uso: Você deve usar
driver.quit
sempre que quiser finalizar o programa. Ele fechará todas as janelas abertas do navegador e encerrará a sessão do WebDriver. Se você não usardriver.quit
no final do programa, a sessão do WebDriver não será fechada corretamente e os arquivos não serão limpos da memória. Isso pode resultar em erros de vazamento de memória.A explicação acima deve explicar a diferença entre
driver.close
edriver.quit
métodos no WebDriver. Espero que você ache útil.O site a seguir tem algumas boas dicas sobre o teste de selênio: Link
fonte
quit()
: Fecha este driver, fechando todas as janelas associadas que estavam abertas.close()
: Feche a janela atual, fechando o navegador se for a última janela aberta no momento.fonte
close (): - Suponha que você tenha aberto várias janelas do navegador com a mesma instância do driver, agora, chamando close () na instância do driver fechará a janela atual para a qual a instância do driver está apontada. Mas a instância do driver ainda permanece na memória e pode ser usada para lidar com outras janelas abertas do navegador.
quit (): - Se você chamar quit () na instância do driver e houver uma ou mais janelas abertas, ele fechará todas as janelas abertas e a instância do driver será coletada como lixo, ou seja, removida da memória. Portanto, agora você não pode usar esta instância do driver para executar outra operação depois de chamar quit () nela. Se você fizer isso, lançará uma exceção.
dispose (): - Não acho que exista um método de descarte para uma instância do WebDriver.
Você pode acessar o link deste documento oficial do selênio em java para referência.
fonte
Com base em um problema no Github do PhantomJS, o quit () não finaliza o processo do PhantomJS. Você deveria usar:
ligação
fonte
close () é um comando webdriver que fecha a janela do navegador que está atualmente em foco. Apesar do nome familiar para este método,
WebDriver
se não implementar aAutoCloseable
interface de .Durante o processo de automação, se houver mais de uma janela do navegador aberta, o comando close () fechará apenas a janela atual do navegador que está sendo focada naquele momento. As janelas restantes do navegador não serão fechadas. O código a seguir pode ser usado para fechar a janela atual do navegador:
quit () é um comando webdriver que chama o método driver.dispose, que por sua vez fecha todas as janelas do navegador e encerra a sessão do WebDriver. Se não usarmos quit () no final do programa, a sessão do WebDriver não será fechada corretamente e os arquivos não serão apagados da memória. Isso pode resultar em erros de vazamento de memória.
Se o processo de automação abrir apenas uma janela do navegador, os comandos close () e quit () funcionarão da mesma maneira. Ambos diferem em sua funcionalidade quando houver mais de uma janela do navegador aberta durante a automação.
Para Acima Ref: clique aqui
Comando Dispose Dispose () deve chamar Quit () e parece que sim. No entanto, ele também tem o mesmo problema, pois as ações subseqüentes são bloqueadas até o PhantomJS ser fechado manualmente.
Ref Link
fonte
Diferença entre driver.close () e driver.quit ()
driver.close - Fecha a janela do navegador na qual o foco está definido.
driver.quit - basicamente chama o método driver.dispose que, por sua vez, fecha todas as janelas do navegador e encerra a sessão do WebDriver normalmente.
fonte
Selenium WebDriver
WebDriver.Close()
Este método é usado para fechar a janela aberta atual. Fecha a janela aberta atual na qual o driver está focado.WebDriver.Quit()
Este método é usado para destruir a instância do WebDriver. Ele fecha todas as janelas do navegador associadas a esse driver e encerra a sessão com segurança. WebDriver.Quit () chama Dispose.WebDriver.Dispose()
Este método fecha todas as janelas do navegador e termina com segurança a sessãofonte
Meu entendimento é
driver.close();
que fechará o navegador atual edriver.quit();
encerrará todo o navegador que.fonte