![](/img/trans.png)
[英]How can I work with Chrome browser's cookies with Selenium Webdriver in C#?
[英]How can I install Selenium’s webdriver.exe in [PATH] htrough the project’s published installer?
我有一個使用 Selenium 的 Windows Forms 應用程序。我有多個需要運行此應用程序的生產客戶端,我注意到在每個新客戶端(以及當我需要更新 webdriver 時)我需要復制並粘貼。 exe 到 [PATH] 位置 (%USERPROFILE%\AppData\Local\Microsoft\WindowsApps),我想使用每次發布應用程序時 Visual Studio 生成的安裝文件自動執行它。
我發現你可以安裝一個名為“Microsoft Visual Studio Installer Project”的擴展,在其上包含 .exe 文件,或者創建一個新表單來檢查 webdriver 是否到位以及是否不復制它,或者我可以更改 IWebDriver object 的 [PATH] 以反映此文件的新路徑。 作為獎勵,您還可以添加桌面圖標。
但在我開始尋找解決方法之前,首先我想知道是否有辦法通過“發布向導”參數將這個 webdriver.exe 文件發布到它的正確地址。
這適用於我的用例,對於上下文,我使用的是 windows forms 項目,目標是 .NET(框架)4.7.1。 這些是我的事件“加載”和“顯示”的片段,格式為不同的 function。我只包含了文件檢查、下載和解壓縮背后的邏輯。 由於此版本 .NET 的 System.IO.Compression.ZipFile class 本身不支持覆蓋文件,因此我使用了從 NuGet 下載的 Ionic 的 DotNetZip package。
using Ionic.Zip;
using System;
using System.Diagnostics;
using System.IO;
using System.Net;
private void DriverCheck(){
string edge, edgeVersion, edgeDriverPath, edgeDriver, edgeDriverVersion;
edge = @"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe";
edgeVersion = FileVersionInfo.GetVersionInfo(edge).FileVersion;
edgeDriverPath = Environment.GetEnvironmentVariable("LocalAppData") + "\\Microsoft\\WindowsApps\\";
edgeDriver = edgeDriverPath + "msedgedriver.exe";
try
{
edgeDriverVersion = FileVersionInfo.GetVersionInfo(edgeDriver).FileVersion;
}
catch
{
edgeDriverVersion = null;
}
if (!File.Exists(edgeDriver) || edgeVersion != edgeDriverVersion)
{
try
{
using (var client = new WebClient())
{
string winver;
if (Environment.Is64BitProcess)
{
winver = "64";
}
else
{
winver = "32";
}
string zipPath = edgeDriverPath + "edgedriver_win64.zip";
client.DownloadFile("https://msedgedriver.azureedge.net/" + edgeVersion + "/edgedriver_win" + winver + ".zip", zipPath);
using (ZipFile zip = ZipFile.Read(zipPath))
{
foreach (ZipEntry temp in zip)
{
temp.Extract(edgeDriverPath, ExtractExistingFileAction.OverwriteSilently);
}
}
}
}
catch (Exception ex)
{
MessageBox.Show("Error downloading webdriver:\n" + ex.Message);
Application.Exit();
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.