【问题标题】:System.Reflection.TargetInvocationException : Exception has been thrown by the target of an invocationSystem.Reflection.TargetInvocationException :调用的目标已引发异常
【发布时间】:2018-04-29 18:40:32
【问题描述】:

我正在尝试自动化一个 reactjs 应用程序以及我们项目使用的基于 C# 和 protractor-net 构建的框架。

在任何单击或断言功能后,我收到以下错误,但代码中定义的操作成功执行。

System.Reflection.TargetInvocationException : Exception has been thrown by the target of an invocation.
  ----> OpenQA.Selenium.WebDriverTimeoutException : timeout

这个错误的原因是什么?

    using NUnit.Framework;
    using OpenQA.Selenium;
    using OpenQA.Selenium.Interactions;
    using OpenQA.Selenium.Support.PageObjects;
    using OpenQA.Selenium.Support.UI;
    using Protractor;
    using System;
    using System.Collections.Generic;


    public Class personalinformations
    {

    private NgWebDriver _ngdriver;


            public PersonalInformations(IWebDriver driver)
            {

                _ngdriver = new NgWebDriver(driver);
                PageFactory.InitElements(_ngdriver, this);
                _ngdriver.IgnoreSynchronization = true;

            }

     [FindsBy(How = How.Id, Using = "btnSubmit")]
            private IWebElement btnsave { get; set; }

     public void saveSection()
            {
WebDriverWait wait = new WebDriverWait(ngdriver, TimeSpan.FromSeconds(30));         
           wait.Until(ExpectedConditions.ElementIsVisible(By.XPath("//*@id='btnSubmit']"));

btnsave.Click();
    }
}

注意:在使用 Thread.Sleep(1000) 等待时,有时代码会起作用。我也尝试使用 Javascript 来单击元素,结果是相同的。

【问题讨论】:

  • 欢迎来到 Stack Overflow!寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定问题或错误以及重现它所需的最短代码在问题本身。没有清晰的问题陈述的问题对其他读者没有用处。请参阅:minimal reproducible example
  • 代码试用
  • 请更新代码

标签: c# reactjs selenium selenium-webdriver protractor-net


【解决方案1】:

一旦你通过 WebDriverWaitExpectedConditions 方法等待元素 ElementIsVisible 就像在下一步中你调用 Click() 所以而不是ElementIsVisible方法你需要调用ElementToBeClickable方法如下:

public void saveSection()
{
    WebDriverWait wait = new WebDriverWait(ngdriver, TimeSpan.FromSeconds(30));         
    wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath("//*@id='btnSubmit']"));
    btnsave.Click();
}

【讨论】:

    【解决方案2】:

    这是一个有趣的异常:“System.Reflection.TargetInvocationException:异常已被调用的目标抛出。”; 我遇到过几次,但我搜索了这个帖子"Exception has been thrown by the target of an invocation" error (mscorlib) 他们说你应该检查这个异常背后的根本原因。 所以我加了一个

    尝试 {element.Click();} catch(Exception e){Console.WriteLine(e);}

    然后异常似乎逃脱了......

    【讨论】:

      猜你喜欢
      • 2016-03-30
      • 2019-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-09
      • 1970-01-01
      相关资源
      最近更新 更多