我在尝试实现等待和点击元素时遇到问题。下面的代码发生了什么,我找到一个实例的所有元素,然后根据我是否正在寻找顶部或底部篮子,我说明我想要点击哪个元素。
问题是硒正在快速移动,无法找到要点击的元素。所以不要做
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();
}
答案 0 :(得分:0)
使用ExplicitWait
直到您的所有元素都可见。一旦可见,然后执行您的进一步行动
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromMilliseconds(20000));
wait.Until(ExpectedConditions.VisibilityOfAllElementsLocatedBy(CommonPageElements.SelectDiscountsLink));
因此,一旦所有元素都在那里,然后使用相同的等待单个元素可点击,如
wait.Until(ExpectedConditions.ElementIsClickable(selectDiscountLink[0]));