1

Bruno Baia v0.9.2 Selenium Webdriver v3.0.1 Selenium.Webdriver.ChromeDriver v2.27.0 使用 Protractor 我面临以下问题。我正在从非 Angular 页面登录。当我在我的应用程序的第一个 Angular 页面上时,我想单击页面上 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);
    }

}

当前面的语句是 aThread.Sleep()但没有出现不需要的 Sleep an时,这可以正常工作IndexOutOfRangeException。司机告诉我IgnoreSynchronisation = false isAngular2 = false

我究竟做错了什么?

4

1 回答 1

-1

我猜当您在FindElements没有睡眠的情况下打电话时,该元素还不存在。在寻找它之前,您应该等待元素存在。

最有可能使用

driver.WaitForAngular();

将解决问题(方法等待角度完成加载)。

如果没有,您可以设置隐式等待编写扩展以在查找元素时等待

顺便说一句,在您的情况下不需要使用FindElements(By)[0], 方法FindElement将返回 DOM 中的第一个元素。

于 2017-02-07T03:28:33.347 回答