我尝试使用Selenium C#WebDriver编写测试,然后是下一个场景。
我有一个页面,其中有一个用户列表,用于查找特定用户,我在输入框中输入一个术语,然后单击一个过滤器按钮并选择(尽管它在无序列表中)过滤选项。然后列表将刷新,我将能够点击放大镜镜头,以便转到其详细信息页面。
目前的代码是这样的:
[FindsBy(How = How.Id, Using = "customerNameTexbox")]
private IWebElement _customerNameField;
[FindsBy(How = How.CssSelector, Using = "img[alt=\"View\"]")]
private IWebElement _openClientMagnifierImage;
public void NavigateToClientsAppsPage(string customerName)
{
_customerNameField.Clear();
_customerNameField.SendKeys(customerName);
SelectEqualTo();
_openClientMagnifierImage.Click();
}
private void SelectEqualTo()
{
var filterButton = Browser.Driver.WaitForElement(By.Id("#filterButton"), 10);
filterButton.SendKeys(Keys.Enter);
var equalToFilter = Browser.Driver.WaitForElement(By.XPath("//*[@id='rfltMenu_detached']//span[contains(.,'EqualTo')]"), 10);
var js = Browser.Driver as IJavaScriptExecutor;
js.ExecuteScript("arguments[0].click();", equalToFilter);
}
我必须使用javascript来点击过滤器,因为一旦我点击过滤器按钮(实际上是创建过滤器选项的事件),它们几乎立即被隐藏。 另一件事是我在IWebElement上使用WaitForElement扩展方法,基本上它只是一个明确的等待。
现在我遇到的问题是点击放大镜的速度非常快,在点击过滤器选项后没有时间刷新列表(只刷新列表)。因此它最终会点击最初显示的列表中的第一个条目。
有没有办法等待页面中的元素在以前存在时重新加载?
由于