Webdriver 管理器和 c#

Dav*_*yne 3 c# selenium

我正在考虑使用 c#/Selenium 而不是 JavaScript/Selenium。我在使用 Webdriver-manager 和 chromedriver 时遇到问题。

Chromedriver 适用于 v88(Chrome 浏览器也是 v88),但是当我运行测试时,它失败并显示 ..

message: System.InvalidOperationException : session not created: This version of ChromeDriver only supports Chrome version 85 (SessionNotCreated)

我尝试在命令提示符下使用旧的 JS/Selenium 技术,webdriver-manager updatewebdriver-manager start仍然遇到相同的错误。

这是代码 - 这是实验性的,删除了真实数据......我知道我错过了一些明显的东西......只是看不到我的 JS 墙!

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Support.UI;
using BAMCIS.Util.Concurrent;
using WebDriverManager.DriverConfigs.Impl;

namespace CFirstSharp
{


[TestFixture]
public class Chrome_test1
{
    private IWebDriver driver;
    public string homeURL;
   
    [Test(Description = "Login to PMS")]
    


    public void Login_is_on_home_page()
    {
        new WebDriverManager.DriverManager().SetUpDriver(new ChromeConfig());
        ChromeDriver driver = new ChromeDriver();


        homeURL = "https://<UL>/";
        driver.Navigate().GoToUrl(homeURL);
        WebDriverWait wait = new WebDriverWait(driver,
System.TimeSpan.FromSeconds(15));
       

        IWebElement siteID;
       
        siteID = driver.FindElement(By.XPath("//*[@id='winp_SiteID']"));
     
      siteID.SendKeys("<siteID>");


        IWebElement usrName;

        usrName = driver.FindElement(By.XPath("//*[@id='winp_UserID']"));

        usrName.SendKeys("<usrName>");


        IWebElement usrPass;

        usrPass = driver.FindElement(By.XPath("//*[@id='winp_Password']"));

        usrPass.SendKeys("<usrPass>");

        TimeUnit.SECONDS.Sleep(2);
        
       
        IWebElement logOn;

        logOn = driver.FindElement(By.XPath("//*[@id='btn_LogOn']"));

        logOn.Click();

        TimeUnit.SECONDS.Sleep(7);


        //IWebElement element =
        //driver.FindElement(By.XPath("//a[@href='/beta/login']"));
        //          Assert.AreEqual("Sign In", element.GetAttribute("text"));


    }


    [TearDown]
    public void TearDownTest()
    {
        driver.Close();
    }


    [SetUp]
    public void SetupTest()
    {
        homeURL = "https://<URL>/";
        driver = new ChromeDriver();

    }


}
Run Code Online (Sandbox Code Playgroud)

小智 5

我建议您不要使用 JS 的方法,而是采用 C# 包管理来处理驱动程序,因为您现在正在使用 C#。

假设您使用的是 Chrome 版本 88: https://www.nuget.org/packages/Selenium.WebDriver.ChromeDriver/88.0.4324.9600

将该依赖项添加到您的项目中,在恢复/构建时,它将把 ChromeDriver.exe 添加到您的 bin 目录中。在不指定路径的情况下调用新的 Chromedriver 将使用设置的系统属性,或者在项目的 bin 目录中查找 chromedriver.exe,从而使此方法成为处理驱动程序管理的更流畅的方式。