Транспортир кажется не ждать

Работа с Protractor от Bruno Baia v0.9.2 Selenium Webdriver v3.0.1 Selenium.Webdriver.ChromeDriver v2.27.0 Я сталкиваюсь со следующей проблемой. Я вхожу с неугловой страницы. Когда я нахожусь на первой угловой странице своего приложения, я хочу нажать на первую строку NgRepeater на странице следующим образом:

class CarCompanies
{
    NgWebDriver driver;

    [FindsBy(How = How.XPath, Using = "Bedrij")]
    private IWebElement linkBedrijven;

    public bool ContainsText(string text, string heading)
    {
        return SelecteerElement.pageContainsHeadingElementWithText(driver, text, heading);
    }

    public void ClickFirstCar()
    {
        driver.FindElements(NgBy.Repeater("dmsInstance in dmsInstanceList"))[0].Click();   
    }

    public CarCompanies(NgWebDriver driver)
    {
        this.driver = driver;
        PageFactory.InitElements(driver, this);
    }

}

Это прекрасно работает, когда предыдущее утверждение Thread.Sleep() но без этого нежелательного сна IndexOutOfRangeException появляется. Водитель говорит мнеIgnoreSynchronisation = falseisAngular2 = false,

Что я делаю неправильно?

1 ответ

Я предполагаю, что элемент еще не там, когда вы звоните FindElements без сна. Вы должны подождать, пока элемент будет там, прежде чем искать его.

Скорее всего, используя

driver.WaitForAngular();

решит проблему (методы ждут угловых, чтобы закончить загрузку).

Если нет, вы можете установить неявное ожидание или написать расширение для ожидания при поиске элемента.

Кстати, в вашем случае нет необходимости использовать FindElements(By)[0]метод FindElement вернет первый элемент в DOM.

Другие вопросы по тегам