等待元素使用Selenium重新加载

时间:2015-04-28 09:31:55

标签: c# selenium-webdriver

我尝试使用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扩展方法,基本上它只是一个明确的等待。

现在我遇到的问题是点击放大镜的速度非常快,在点击过滤器选项后没有时间刷新列表(只刷新列表)。因此它最终会点击最初显示的列表中的第一个条目。

有没有办法等待页面中的元素在以前存在时重新加载?

由于

0 个答案:

没有答案