如何在找到所有元素后执行等待和单击?

时间:2017-10-26 19:44:02

标签: c# selenium

我在尝试实现等待和点击元素时遇到问题。下面的代码发生了什么,我找到一个实例的所有元素,然后根据我是否正在寻找顶部或底部篮子,我说明我想要点击哪个元素。

问题是硒正在快速移动,无法找到要点击的元素。所以不要做

selectDiscountLink[0].Click();

or 

selectDiscountLink[1].Click();

我真正想要做的是使用WaitandClickElement方法。问题是我正在努力实现这一点,因为首先它会查找所有元素然后当我选择单个元素时,我只能选择.click()。我需要更改什么才能找到所有元素,然后执行waitandclick?

public void OpenDiscountsMenu(string basketLocation)     {         var selectDiscountLink = _driver.FindElements(CommonPageElements.SelectDiscountsLink);

    if (basketLocation.ToLower() == "top")
        selectDiscountLink[0].Click();
    else
        selectDiscountLink[1].Click();
}

1 个答案:

答案 0 :(得分:0)

使用ExplicitWait直到您的所有元素都可见。一旦可见,然后执行您的进一步行动

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromMilliseconds(20000));
wait.Until(ExpectedConditions.VisibilityOfAllElementsLocatedBy(CommonPageElements.SelectDiscountsLink));

因此,一旦所有元素都在那里,然后使用相同的等待单个元素可点击,如

wait.Until(ExpectedConditions.ElementIsClickable(selectDiscountLink[0]));