System.Reflection.TargetInvocationException: исключение было сгенерировано целью вызова - PullRequest
0 голосов
/ 29 апреля 2018

Я пытаюсь автоматизировать приложение activjs и среду, которую использует наш проект, на 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 щелкнуть элемент, результат тот же.

1 Ответ

0 голосов
/ 30 апреля 2018

Как только вы дождетесь элемента через WebDriverWait и ExpectedConditions метод 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();
}
...