我有一个3点按钮,我点击配置网格上的元素。如果我一步一步地走下去。当我调试我的脚本时,它看不到网格上的3点配置按钮。因为它走得太快了。
[Then(@ "user clicks on the configure for client buttons for main flow")]
public void ThenUserClicksOnTheConfigureForClientButtonsForMainFlow()
{
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(30);
IWebElement waitDots = new WebDriverWait(driver, TimeSpan.FromSeconds(30)).Until(ExpectedConditions.ElementExists((By.CssSelector("#grid > div.k-grid-content.k-auto-scrollable > table > tbody > tr:nth-child(3) > td:nth-child(4) > a"))));
Actions action = new Actions(driver);
action.MoveToElement(driver.FindElement(By.CssSelector("#grid > div.k-grid-content.k-auto-scrollable > table > tbody > tr:nth-child(3) > td:nth-child(4) > a > i"))).Build().Perform();
IWebElement ConfigureDots = driver.FindElement(By.CssSelector("#grid > div.k-grid-content.k-auto-scrollable > table > tbody > tr:nth-child(3) > td:nth-child(4) > a > i"));
ConfigureDots.Click();
}
简单的方法是插入Thread.Sleep(),通常1到几秒钟就可以了。"correct"方法是调用WebDriverWait(),就像你所做的那样,除非你可能指定了错误的条件,而且很难找到一个真正有效的WebDriverWait()条件。
顺便说一句,你给我们看的代码看起来不像是在测试开始时开始的。只是一个警告,有时您的等待需要比您想象的更早,例如在调用此方法之前运行的代码中。
我已经尝试了Thread.Sleep(),它似乎不工作,因为它仍然告诉我找不到网格上的按钮。我已经使用了Thread.Sleep(5)并通过调试,它看起来不像等待5秒,它只是快速通过。