无法使用C#和Selenium切换到新窗口运行测试

无法使用C#和Selenium切换到新窗口运行测试,c#,selenium,C#,Selenium,我正在使用C#和Selenium来尝试自动化我们网站的测试。我有一个链接,点击它会打开一个新窗口。我想知道如何切换到这个新窗口继续测试 我试过下面这句话,我在很多博客上都看到过,但最后一句没有出现在Intellisense中,下面是红色的曲线 driverIE.SwitchTo().Window(driverIE.WindowHandles.Last()); 我刚开始在VisualStudio中使用C#,所以我不确定我是否没有包含我应该包含的内容。这是我尝试运行的测试的开始 using Sys

我正在使用C#和Selenium来尝试自动化我们网站的测试。我有一个链接,点击它会打开一个新窗口。我想知道如何切换到这个新窗口继续测试

我试过下面这句话,我在很多博客上都看到过,但最后一句没有出现在Intellisense中,下面是红色的曲线

driverIE.SwitchTo().Window(driverIE.WindowHandles.Last());
我刚开始在VisualStudio中使用C#,所以我不确定我是否没有包含我应该包含的内容。这是我尝试运行的测试的开始

using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System.Collections.ObjectModel;
using OpenQA.Selenium;
using OpenQA.Selenium.IE;

namespace SeleniumTest
{
    [TestClass]
    public class UnitTest1
    {
        static IWebDriver driverIE;

        [AssemblyInitialize]
        public static void SetUp(TestContext context)
        {
            driverIE = new InternetExplorerDriver(@"C:\Selenium");
        }

        [TestMethod]
        public void TestIEDriver()
        {
            driverIE.Navigate().GoToUrl("http://localhost/site/");
            driverIE.FindElement(By.Id("txtUserId")).SendKeys("username");
            driverIE.FindElement(By.Id("txtPassword")).SendKeys("password");
            driverIE.FindElement(By.Id("txtPassword")).SendKeys(Keys.Enter);

            //Open Quote
            driverIE.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);
            driverIE.FindElement(By.LinkText("Personal Auto")).Click();

            //Switch to Quote Window
            driverIE.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);
            ReadOnlyCollection<string> WindowList = driverIE.WindowHandles;
            driverIE.SwitchTo().Window(driverIE.WindowHandles.Last());
            driverIE.FindElement(By.Id("txtAgencyCd")).SendKeys("Code");
        }
    }
}
使用系统;
使用Microsoft.VisualStudio.TestTools.UnitTesting;
使用System.Collections.ObjectModel;
使用OpenQA.Selenium;
使用OpenQA.Selenium.IE;
名称空间SeleniumTest
{
[测试类]
公共类UnitTest1
{
静态IWebDriver驱动器;
[汇编初始化]
公共静态无效设置(TestContext上下文)
{
driverIE=新的InternetExplorerDriver(@“C:\Selenium”);
}
[测试方法]
公共无效测试驱动程序()
{
driverIE.Navigate().gotour(“http://localhost/site/");
driverIE.FindElement(By.Id(“txtUserId”)).SendKeys(“用户名”);
driverIE.FindElement(By.Id(“txtPassword”)).SendKeys(“密码”);
driverIE.FindElement(By.Id(“txtPassword”)).SendKeys(Keys.Enter);
//公开报价
driverIE.Manage().Timeouts().ImplicitWait=TimeSpan.FromSeconds(10);
driverIE.FindElement(By.LinkText(“个人自动”))。单击();
//切换到报价窗口
driverIE.Manage().Timeouts().ImplicitWait=TimeSpan.FromSeconds(10);
ReadOnlyCollection WindowList=driverIE.WindowHandles;
driverIE.SwitchTo().Window(driverIE.WindowHandles.Last());
driverIE.FindElement(By.Id(“txtAgencyCd”)).SendKeys(“代码”);
}
}
}

您可以在切换到url后使用此选项

        WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10)); //you can change 10 seconds to whatever it suits you the best.
        wait.Until(ExpectedConditions.VisibilityOfAllElementsLocatedBy(By.Id("login")));

你可以顺便来看看你在等什么身份证。我在窗口中使用login来等待,直到我获得login元素。当我在第一个窗口中“单击”链接时,它会自动在旧窗口的顶部启动一个新窗口,因此现在有两个窗口。我想知道如何切换到新窗口。点击的链接使用javascript打开新窗口。这并不能回答问题。