Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用量角器的C#单元测试中出现无效操作异常_C#_Selenium Webdriver_Protractor_Protractor Net - Fatal编程技术网

使用量角器的C#单元测试中出现无效操作异常

使用量角器的C#单元测试中出现无效操作异常,c#,selenium-webdriver,protractor,protractor-net,C#,Selenium Webdriver,Protractor,Protractor Net,我有一个简单的测试类,如下所示: public class MyTest { const string URL = "https://example.com/content/mypage.aspx"; IWebDriver driver; NgWebDriver ngDriver; [SetUp] public void Setup() { driver = new ChromeDriver(); driver.

我有一个简单的测试类,如下所示:

public class MyTest
{
    const string URL = "https://example.com/content/mypage.aspx";

    IWebDriver driver;
    NgWebDriver ngDriver;

    [SetUp]
    public void Setup()
    {
        driver = new ChromeDriver();
        driver.Manage().Timeouts().SetScriptTimeout(TimeSpan.FromSeconds(10));
        ngDriver = new NgWebDriver(driver);
    }

    [TearDown]
    public void Teardown()
    {
        ngDriver.Quit();
    }

    [Test]
    public void Basic()
    {
        ngDriver.Url = URL;

        Assert.IsTrue(ngDriver.FindElement(By.CssSelector("#my")).Displayed);
    }
}
下面是HTML代码片段:

<kendo-button id="my" ng-click="myCtrl.doSomething()">Do Something</kendo-button>
堆栈跟踪是:

在OpenQA.Selenium.Remote.RemoteWebDriver.unpackanthrowonerror(Response error Response)
在OpenQA.Selenium.Remote.RemoteWebDriver.Execute(stringdrivercommandtoexecute,Dictionary`2参数)
位于OpenQA.Selenium.Remote.RemoteWebDriver.ExecuteScriptCommand(字符串脚本、字符串命令名、对象[]参数)
位于OpenQA.Selenium.Remote.RemoteWebDriver.ExecuteAsyncScript(字符串脚本,对象[]args)
在c:\Users\Bruno\Projets\GitHub\bbaia\dragrator net\src\dragrator\NgWebDriver.cs中的gragrator.NgWebDriver.WaitForAngular()处:第315行
在c:\Users\Bruno\Projets\GitHub\bbaia\dragrator net\src\dragrator\NgWebDriver.cs中的dragrator.NgWebDriver.FindElement(By)处:第262行

我只得到了量角器和Selenium WebDriver Nuget包。是否需要安装其他内容,或者这实际上是一个代码问题?

在断言之前,您实际上没有导航到URL

试一试-


基于我在下面分享的内容,我发现我的问题是没有指定文档的根。在我的标签上,我有

data-ng-app='myApp'
创建量角器驱动程序的代码是:

ngDriver = new NgWebDriver(driver, "[ng-data='myApp']"
量角器网络不会修改此直接CSS搜索条件,因此有效的方法是:

ngDriver = new NgWebDriver(driver, "[data-ng-app='myApp']"
没有答案,但我没有能力评论

我也看到了同样的问题。进一步的调查显示,实例化NgWebDriver时会引发异常。检查对象时,会显示创建的对象的位置、PageSource、标题和Url成员“引发了类型为'System.InvalidOperationException'字符串{System.InvalidOperationException}的异常”。只有在尝试查找元素时,才会向测试抛出异常

我的代码如下所示:

        public DefaultPOM(IWebDriver webDriver, string baseURL)
    {
        driver = webDriver;
        this.baseURL = baseURL;
        driver.Manage().Timeouts().SetScriptTimeout(TimeSpan.FromSeconds(10));
        driver.Navigate().GoToUrl(baseURL);
        ngDriver = new NgWebDriver(driver, "[ng-app='myApp']");
        ngDriver.Manage().Window.Maximize();
        ngDriver.Navigate().GoToUrl(baseURL);

    }
创建ngDriver对象后立即检查该对象会显示异常

如果在导航之前关闭同步,则记录异常的驱动程序对象的唯一成员是位置

        ngDriver = new NgWebDriver(driver, "[ng-app='NCTWebPortal']");
        ngDriver.IgnoreSynchronization=true;
        ngDriver.Manage().Window.Maximize();
        ngDriver.Navigate().GoToUrl(baseURL);
        ngDriver.IgnoreSynchronization = false;
        ngDriver = new NgWebDriver(driver, "[ng-app='NCTWebPortal']");
        ngDriver.IgnoreSynchronization=true;
        ngDriver.Manage().Window.Maximize();
        ngDriver.Navigate().GoToUrl(baseURL);
        ngDriver.IgnoreSynchronization = false;