web-dev-qa-db-fra.com

La dll de chargement Powershell a obtenu une erreur: Add-Type: impossible de charger le fichier ou l'assembly 'WebDriver.dll' ou l'une de ses dépendances. L'opération n'est pas prise en charge

Je souhaite utiliser PowerShell avec Selenium et télécharger Selenium depuis http://www.Java2s.com/Code/Jar/s/Downloadseleniumremotedriver2350jar.htm . Lorsque j'essaie de charger l'une des DLL, j'ai des erreurs. J'espère que quelqu'un pourra m'aider.

Ceci est mes informations système.

OS Name:                   Microsoft Windows 7 Enterprise
OS Version:                6.1.7601 Service Pack 1 Build 7601
OS Manufacturer:           Microsoft Corporation

Ceci est mes informations PowerShell.

PS C:\Users\test\Downloads\Selenium-dotnet-2.35.0\net40> $psversiontable

Name                           Value
----                           -----
PSVersion                      4.0
WSManStackVersion              3.0
SerializationVersion           1.1.0.1
CLRVersion                     4.0.30319.18052
BuildVersion                   6.3.9421.0
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0}
PSRemotingProtocolVersion      2.2


PS C:\Users\test\Downloads\Selenium-dotnet-2.35.0\net40>

Ce sont les erreurs que j'ai eues en essayant de charger la DLL.

    PS C:\Users\test\Downloads\Selenium-dotnet-2.35.0\net40> Add-Type -Path .\WebDriver.dll
    Add-Type : Could not load file or Assembly 'file:///C:\Users\test\Downloads\Selenium-dotnet-2.35.0\net40\WebDriver.dll' or one of its dependencies. Operation is
    not supported. (Exception from HRESULT: 0x80131515)
    At line:1 char:1
    + Add-Type -Path .\WebDriver.dll
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : NotSpecified: (:) [Add-Type], FileLoadException
        + FullyQualifiedErrorId : System.IO.FileLoadException,Microsoft.PowerShell.Commands.AddTypeCommand

    PS C:\Users\test\Downloads\Selenium-dotnet-2.35.0\net40> [reflection.Assembly]::LoadFrom(".\WebDriver.dll")
    Exception calling "LoadFrom" with "1" argument(s): "Could not load file or Assembly 'file:///C:\Users\test\WebDriver.dll' or one of its dependencies. The system
    cannot find the file specified."
    At line:1 char:1
    + [reflection.Assembly]::LoadFrom(".\WebDriver.dll")
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
        + FullyQualifiedErrorId : FileNotFoundException

    PS C:\Users\test\Downloads\Selenium-dotnet-2.35.0\net40> [reflection.Assembly]::LoadFrom("WebDriver.dll")
    Exception calling "LoadFrom" with "1" argument(s): "Could not load file or Assembly 'file:///C:\Users\test\WebDriver.dll' or one of its dependencies. The system
    cannot find the file specified."
    At line:1 char:1
    + [reflection.Assembly]::LoadFrom("WebDriver.dll")
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
        + FullyQualifiedErrorId : FileNotFoundException

    PS C:\Users\test\Downloads\Selenium-dotnet-2.35.0\net40> [reflection.Assembly]::LoadFrom("C:\Users\test\Downloads\Selenium-dotnet-2.35.0\net40\WebDriver.dll")
    Exception calling "LoadFrom" with "1" argument(s): "Could not load file or Assembly 'file:///C:\Users\test\Downloads\Selenium-dotnet-2.35.0\net40\WebDriver.dll' or
    one of its dependencies. Operation is not supported. (Exception from HRESULT: 0x80131515)"
    At line:1 char:1
    + [reflection.Assembly]::LoadFrom("C:\Users\test\Downloads\Selenium-dotnet-2.35.0 ...
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
        + FullyQualifiedErrorId : FileLoadException

    PS C:\Users\test\Downloads\Selenium-dotnet-2.35.0\net40> [reflection.Assembly]::LoadFile("C:\Users\test\Downloads\Selenium-dotnet-2.35.0\net40\WebDriver.dll")
    Exception calling "LoadFile" with "1" argument(s): "An attempt was made to load an Assembly from a network location which would have caused the Assembly to be sandboxed

 in previous versions of the .NET Framework. This release of the .NET Framework does not enable CAS policy by default, so this load may be dangerous. If
    this load is not intended to sandbox the Assembly, please enable the loadFromRemoteSources switch. See http://go.Microsoft.com/fwlink/?LinkId=155569 for more
    information."
    At line:1 char:1
    + [reflection.Assembly]::LoadFile("C:\Users\test\Downloads\Selenium-dotnet-2.35.0 ...
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
        + FullyQualifiedErrorId : NotSupportedException

    PS C:\Users\test\Downloads\Selenium-dotnet-2.35.0\net40>
13
Just a learner

Si vous avez téléchargé les .DLL à partir d'Internet, Powershell par défaut ne leur fera pas confiance. Vous pouvez faire deux choses ici:

  1. Débloquez le contenu. Voici un guide avec des précisions sur le problème , mais il vous suffit essentiellement de cliquer avec le bouton droit sur le fichier téléchargé, de sélectionner Propriétés et de cliquer sur "Débloquer" dans l'onglet général. Vous pouvez débloquer le contenu directement depuis PowerShell en utilisant le Unblock-File applet de commande.
  2. Changez votre politique d'exécution . Cela peut également permettre l'exécution de scripts malveillants que vous téléchargez, soyez donc prudent.

En particulier, l'examen et le déblocage du contenu en lequel vous avez confiance semblent être la meilleure solution, en particulier pour votre cas, car vous semblez ne le faire qu'une seule fois et vous faites confiance au package.


Edit: Si cela ne résout pas cela, l'autre expérience que j'ai eue avec ce type d'erreur est quand Powershell n'a pas la même version de le runtime .NET en tant qu'assembly. Voir cette question pour un certain contexte, où Powershell 2.0 a exécuté le runtime .NET 2 et le demandeur avait besoin de .NET 4 pour certains assemblys.

Vous n'utilisez pas la même version de PS, donc votre kilométrage peut varier, mais j'essaierais de créer/modifier un fichier de configuration selon la réponse liée pour prendre en charge l'exécution des DLL que vous utilisez.

37
Anthony Neace

Cela a fonctionné pour moi: (from https://stackoverflow.com/a/19957173/107161 )

Dans les fichiers:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe.config C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe.config

<?xml version="1.0" encoding="utf-8" ?> 
<configuration>
   <runtime>
      <loadFromRemoteSources enabled="true"/>
   </runtime>
</configuration>
5
wtjones

Exécuter en tant qu'administrateur a résolu le problème, bien que ma politique get-execution soit entièrement signée

0