Когда я запускаю тестовый сценарий Selen C #, он не проходит, и когда я отлаживаю его, он проходит. В чем проблема? - PullRequest
0 голосов
/ 23 октября 2018

Я немного новичок в селене с C #, у меня есть следующий код

GlobalClass glc = new GlobalClass();

glc.waitForElementToBeClickable("select2-mainCorporateCustomers-results",7);
glc.randomClickULOption("select2-mainCorporateCustomers-results");
Thread.Sleep(5000);
glc.ClickDropdownbyText("MyDropDownName");

И ниже метод waitForElementToBeClickable в глобальном классе:

public void waitForElementToBeClickable(string elementID, double waitTime)
{
DefaultWait<IWebDriver> wait = new DefaultWait<IWebDriver>browserDriver);
   wait.Timeout = TimeSpan.FromSeconds(waitTime);
   wait.IgnoreExceptionTypes(typeof(NoSuchElementException));
   IWebElement searchResult = 
   wait.Until(ExpectedConditions.ElementToBeClickable(By.Id(elementID))); 
}

И нижемой метод randomClickULOption в глобальном классе, который случайным образом нажимает на элемент в указанном списке:

public void randomClickULOption(string ComboID)
    {            
        int itemsCount = 0;
        IWebElement comboName = browserDriver.FindElement(By.Id(ComboID));
        IList<IWebElement> listItems = 
        comboName.FindElements(By.TagName("li"));
        foreach (IWebElement element in listItems)
        {
            itemsCount = itemsCount + 1;                
        }
        if (itemsCount==0)
        {
            Assert.Fail("No items in the combo box");
        }
        Random rand = new Random();
        int iSelect = rand.Next(itemsCount);
        //Selecting value from DropDownList
        listItems[iSelect].Click();            
    }

А ниже мой ClickDropdownbyText, который открывает раскрывающееся меню с его текстом

public void ClickDropdownbyText(string text)
{
   var clickPath = "//span[contains(text(), '" + text + "')]";
   browserDriver.FindElement(By.XPath(clickPath)).Click();
} 

Моя проблема заключается в том, что при запуске тестового примера выдается следующее исключение:

OpenQA.Selenium.NoSuchElementException: нет такого элемента: невозможно найти элемент: {"method": "xpath", "selector": "// span [содержит (text (), 'MyDropDownName')]"}

И когда я ставлю точку останова на следующую строку в моем тестовом примере:

glc.randomClickULOption("select2-mainCorporateCustomers-results");

и пошагово отлаживаем код, тестовый пример проходит без проблем

Обратите внимание, я попытался увеличить или уменьшить время ожидания в следующей строке:

glc.waitForElementToBeClickable("select2-mainCorporateCustomers-results",3);

Дополнительные примечания: нижестрока кода не актуальнавыполняется в пользовательском интерфейсе веб-страницы:

browserDriver.FindElement(By.XPath(clickPath)).Click();

Я имею в виду, что эта строка должна щелкнуть элемент списка, прежде чем переходить к оставшемуся коду, а на веб-странице этого не происходит, однако она успешно проходит при отладке.мой код

Но проблема все еще существует.Так в чем же проблема?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...