我正在嘗試使用WebDriverManager Package for .Net 在執行測驗用例時自動管理 chromedriver.exe 版本。但是,當我嘗試將 ChromeDriver 物件型別轉換為 RemoteDriverObject 時,它會顯示以下錯誤。
Unable to cast object of type 'OpenQA.Selenium.Chrome.ChromeDriver' to type 'OpenQA.Selenium.Remote.RemoteWebDriver'.
我將在下面撰寫我正在使用的方法和代碼:
public IWebDriver WebInit()
{
ChromeOptions options = new ChromeOptions();
options.AddArguments("--test-type");
options.AddArguments("--start-maximized");
options.AddArguments("--disable-infobars");
options.AddArguments("--disable-extensions");
options.AddAdditionalCapability("useAutomationExtension", false);
options.AddArguments("--ignore-certificate-errors");
options.AddExcludedArgument("enable-automation");
options.AddUserProfilePreference("credentials_enable_service", false);
options.AddUserProfilePreference("profile.password_manager_enabled", false);
options.AddAdditionalCapability("useAutomationExtension", false);
options.AddUserProfilePreference("download.prompt_for_download", false);
options.AddUserProfilePreference("download.default_directory", downloadFilepath);
options.AddUserProfilePreference("safebrowsing.enabled", true);
options.AddArguments("window-size=1600,900");
new DriverManager().SetUpDriver(new ChromeConfig(), VersionResolveStrategy.MatchingBrowser); //this is the code used from the mentioned Github Repository
_driver = new ChromeDriver(options);
}
public void FunctionWhereIAmCallingTheWebInitFucntion()
{
_driver = WebInit()
ICapabilities capabilities = ((RemoteWebDriver)_driver).Capabilities; //whenever this line gets executed it throws the exception that is mentioned
}
以下是我正在使用的包版本
<PackageReference Include="Selenium.Support" Version="4.1.1" />
<PackageReference Include="Selenium.WebDriver" Version="4.1.1" />
<PackageReference Include="WebDriverManager" Version="2.12.4" />
請社區中的任何人都可以指導我我在哪里犯了錯誤?非常感謝!!
uj5u.com熱心網友回復:
好的,根據您在評論中的回復,我認為這就是您想要的。
該ChromeDriver物件具有Capabilities可用于請求名稱和版本的屬性。
只要您ChromeDriver直接使用而不是使用IWebDriver該屬性,就可以如下訪問:
string? versions = driver.Capabilities.GetCapability("browserVersion").ToString();
string? name = driver.Capabilities.GetCapability("browserName").ToString();
我根據您正在嘗試執行的操作稍微修改了您的程式,并將結果列印到控制臺:
private static ChromeDriver WebInit()
{
// set up options
ChromeOptions options = new ChromeOptions();
options.AddArguments("--start-maximized");
// download latest chromedriver
new DriverManager().SetUpDriver(new ChromeConfig(), VersionResolveStrategy.MatchingBrowser); //this is the code used from the mentioned Github Repository
// initialize the driver
ChromeDriver driver = new ChromeDriver(options);
return driver;
}
public static void Main()
{
ChromeDriver driver = WebInit();
// get the capabilities
string? versions = driver.Capabilities.GetCapability("browserVersion").ToString();
string? name = driver.Capabilities.GetCapability("browserName").ToString();
Console.WriteLine(versions);
Console.WriteLine(name);
Console.ReadKey();
}
上面的示例適用于我在 .Net 6.0 中安裝了以下 NuGet 包:
- Selenium.Support (4.1.1)
- Selenium.WebDriver (4.1.1)
- WebDriverManager (2.13.0)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/482293.html
