Olá Fabiano! Tudo bem e com você?
O Edge no meu PC é baseado no Chromium, versão 85.0.564.51 - 64 bits.
Refiz novamente a implementação e funcionou! Acho que devo ter cometido um erro, notei que estava fazendo uso do pacote alpha do Selenium.WebDriver
e também do Microsoft.Edge.SeleniumTools
para a versão 3 do Selenium. Não faz sentido pelo que entendi, já que um é dedicado para a versão 3 e outro para a versão 4.
Desinstalei os pacotes e mantive somente o alpha do Selenium.WebDriver
. Com a versão do msedgedriver.exe
que já fazia uso conforme a versão do meu Edge, utilizei a implementação abaixo
public class CaelumHome : IDisposable
{
private readonly IWebDriver driver;
public CaelumHome() => driver = new EdgeDriver(options: new EdgeOptions { UseChromium = true });
[Fact]
public void DeveApresentarPaginaQuandoNavegarParaEnderecoDaHome()
{
driver.Navigate().GoToUrl("https://www.caelum.com.br");
Assert.Contains("Caelum", driver.Title);
}
public void Dispose() => driver.Quit();
}
E funcionou! A única coisa que me deixou curioso foi que sem usar a propriedade BynaryLocation
da classe EdgeOptions
ele localiza o msedgedriver.exe
na pasta bin
do projeto de Teste. Contudo, para efeito de exemplo, se atribuo para a essa propriedade a instrução abaixo:
BinaryLocation = $"{Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)}\\msedgedriver.exe"
Ele lança essa exceção:
Message:
OpenQA.Selenium.WebDriverException : unknown error: MSEdge failed to start: was killed.
(unknown error: DevToolsActivePort file doesn't exist)
(The process started from msedge location C:\Users\carlos-nogueira\source\repos\Caelum.SeleniumTests\Caelum.SeleniumTests\bin\Debug\netcoreapp3.1\msedgedriver.exe is no longer running, so MSEdgeDriver is assuming that MSEdge has crashed.)
Stack Trace:
RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse)
RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
RemoteWebDriver.StartSession(ICapabilities desiredCapabilities)
RemoteWebDriver.ctor(ICommandExecutor commandExecutor, ICapabilities desiredCapabilities)
ChromiumDriver.ctor(ICommandExecutor commandExecutor, ICapabilities desiredCapabilities)
EdgeDriver.ctor(EdgeDriverService service, EdgeOptions options, TimeSpan commandTimeout)
EdgeDriver.ctor(EdgeDriverService service, EdgeOptions options)
EdgeDriver.ctor(EdgeOptions options)
CaelumHome.ctor() line 14
Não deveria surtir o mesmo efeito da mesma forma quando não atribui valor para BinaryLocation
e ele conseguiu localizar o msedgedriver.exe na pasta bin
?