c# - Webdriver 管理器和 c#

标签 c# selenium

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

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

消息:System.InvalidOperationException:未创建 session :此版本的 ChromeDriver 仅支持 Chrome 版本 85 (SessionNotCreated)

我尝试在命令提示符 webdriver-manager update 后使用旧的 JS/Selenium 技术,然后是 webdriver-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();

    }


}

最佳答案

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

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

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

关于c# - Webdriver 管理器和 c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65849716/

相关文章:

C#帮助使用 quartz 实时配置间隔

c# - .Net 4.0有业务层 "Technology"吗?

c# - C# 中的访问级别

java - driver.findElement() 带有 iframe 和没有 ID 的元素

selenium - 到达错误页面 : about:neterror when trying to navigate to other tabs if there is a form submit under that tab

java - 如何在 Selenium WebDriver 的属性文件中使用多行属性?

c# - Entity Framework COUNT 性能不佳

c# - 将通用图像加载器绑定(bind)到 Xamarin 解决方案

java - Selenium java.lang.NullPointerException 与 PageFactory

python - 如何用python保存使用selenium生成的日志