Question Selenium et ses dépendances

Plus d'informations
il y a 3 mois 3 semaines - il y a 3 mois 3 semaines #34465 par Caramen
Bonjour,

Déjà, je suis nouveau sur ce forum donc bonjour à tous, je suis dev confirmé sur plusieurs langages. 
Mais j'avoue être un peu perdu sur un sujet. 

J'ai souvent fait de l'automatisation pour mes clients dans le professionnel, mais j'ai un sujet qui me chagrine, il y aurait apparemment eu des changements notables sur l'automatisation avec chrome driver et sélénium. 
Mais la, on me demande bientôt de démarrer un projet pour lequel je vais devoir migrer une solution automatisée en PowerShell de chrome vers firefox avec ces outils. 
Avant soit j'installais le module sélénium puis je commençais avec l'exécutable de ChromeDriver. Ainsi de suite. 

Donc avant de débuter mon projet d'ici à quelques jours, je me suis dit que j'allais remettre le nez dans ces outils et badaboum, je suis perdu 

Je demande à vos âmes charitables de bien vouloir m'aider à commencer un petit script qui ouvrirait l'explorateur Chrome et Mozilla pour naviguer vers google. 
Juste pour m'aiguiller sur les installations, car ce sont les seules choses qui me perdent. Le reste, je pense que je m'en sortirai… 'lol'.

Biensûr avant de venir chercher de l'aide ici j'ai testé chat GPT et fait mon script, mais rien ne fonctionne. Je ne fais que tourner en rond. Je pense que c'est lié à la date de data base de GPT qui n'est plus d'actualité pour l'installation des outils. Ou à mon cerveau défaillant :D

Voici le script que j'ai fait, mais qui ne fonctionne pas : 


 
# Définir le chemin de NuGet.exe
$nugetPath = "C:\NuGet\nuget.exe"

# Fonction pour télécharger NuGet.exe si ce n'est pas déjà fait
function Download-NuGet {
    $nugetUrl = "https://dist.nuget.org/win-x86-commandline/latest/nuget.exe"
    $nugetDir = "C:\NuGet"
    $nugetPath = "$nugetDir\nuget.exe"
    if (-not (Test-Path -Path $nugetPath)) {
        if (-not (Test-Path -Path $nugetDir)) {
            New-Item -ItemType Directory -Path $nugetDir
        }
        Invoke-WebRequest -Uri $nugetUrl -OutFile $nugetPath
    }
    return $nugetPath
}

# Fonction pour vérifier et installer un package NuGet
function Install-NuGetPackageIfNeeded {
    param (
        [string]$packageName,
        [string]$sourceUrl,
        [string]$outputDir
    )

    $packageInstalled = & $nugetPath list $packageName | Select-String $packageName

    if (-not $packageInstalled) {
        Write-Output "Le package $packageName n'est pas installé. Installation en cours..."
        & $nugetPath install $packageName -Source $sourceUrl -OutputDirectory $outputDir
    } else {
        Write-Output "Le package $packageName est déjà installé."
    }
}

# Télécharger NuGet.exe si nécessaire
$nugetPath = Download-NuGet

# URL de la source des packages
$nugetSource = 'https://www.nuget.org/api/v2'
$outputDirectory = "C:\NuGet\Packages"

# Installer les packages nécessaires
Install-NuGetPackageIfNeeded -packageName 'Selenium.WebDriver' -sourceUrl $nugetSource -outputDir $outputDirectory
Install-NuGetPackageIfNeeded -packageName 'Selenium.WebDriver.ChromeDriver' -sourceUrl $nugetSource -outputDir $outputDirectory
Install-NuGetPackageIfNeeded -packageName 'Newtonsoft.Json' -sourceUrl $nugetSource -outputDir $outputDirectory

# Définir les chemins des DLL et des exécutables
$seleniumWebDriverDir = "$outputDirectory\Selenium.WebDriver.4.21.0\"
$chromeDriverDir = "$outputDirectory\Selenium.WebDriver.ChromeDriver.126.0.6478.6200\"
$jsonNetDir = "$outputDirectory\Newtonsoft.Json.13.0.1\"

# Trouver les DLL et les drivers
$seleniumWebDriverPath = Get-ChildItem -Path $seleniumWebDriverDir -Recurse -Filter "WebDriver.dll" | Select-Object -First 1
$jsonNetPath = Get-ChildItem -Path $jsonNetDir -Recurse -Filter "Newtonsoft.Json.dll" | Select-Object -First 1
$chromeDriverPath = Get-ChildItem -Path $chromeDriverDir -Recurse -Filter "chromedriver.exe" | Select-Object -First 1

# Charger les types nécessaires
try {
    Add-Type -Path $jsonNetPath.FullName
    Add-Type -Path $seleniumWebDriverPath.FullName
} catch {
    Write-Host "Erreur lors du chargement des types avec Add-Type:"
    Write-Host $Error[0].Exception.Message
    if ($Error[0].Exception.LoaderExceptions) {
        Write-Host "Détails LoaderExceptions :"
        $Error[0].Exception.LoaderExceptions | ForEach-Object {
            Write-Host $_.Message
        }
    }
}

# Ajouter ChromeDriver au PATH pour qu'il puisse être trouvé par Selenium
$env:Path += ";$($chromeDriverPath.DirectoryName)"

# depart de l'automatisation 

# Créer une instance de ChromeDriver
try {
    $chromeOptions = New-Object OpenQA.Selenium.Chrome.ChromeOptions
    $driver = New-Object OpenQA.Selenium.Chrome.ChromeDriver($chromeOptions)
    Write-Host "ChromeDriver lancé avec succès."
} catch {
    Write-Host "Erreur lors de la création de l'instance de ChromeDriver:"
    Write-Host $_.Exception.Message
    exit
}

# Naviguer vers une page web
$driver.Navigate().GoToUrl("https://www.google.com")
Start-Sleep -Seconds 2  # Attendre que la page se charge

# Rechercher un élément sur la page (par exemple, la barre de recherche Google)
$searchBox = $driver.FindElementByName("q")
$searchBox.SendKeys("PowerShell Selenium")

# Soumettre le formulaire de recherche
$searchBox.Submit()

# Attendre que la page de résultats se charge
Start-Sleep -Seconds 2

# Fermer le navigateur
$driver.Quit()


J'ai vérifié et revérifié les dépendances, les répertoires... rien n'y fait :(

Erreur lors de la création de l'instance de ChromeDriver:
Exception lors de l'appel de « .ctor » avec « 1 » argument(s) : « Une exception a été levée par l'initialiseur de type pour 'OpenQA.Selenium.SeleniumManager'. »

Help please ! 
Dernière édition: il y a 3 mois 3 semaines par Caramen.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 3 mois 6 jours #34490 par Arnaud Petitjean
Bonjour Caramen,

Ton message est-il toujours d'actualité ou as-tu pu avancer ?

Arnaud

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.059 secondes
Propulsé par Kunena