我知道Thread.Sleep()
可能不是等待元素显示,可点击等最可靠的方式......
因此,我一直在使用Wait.Until(Expected.Conditions)
方法告诉selenium webdriver等待元素满足所需条件。
看来问题是,Selenium有时候会失败,等待元素显示,可点击等等......即使webDriverWait设置为等待15秒,Selenium也会匆忙而失败,因此我没有得到任何错误,我的测试通过代码明智,但实际元素被点击太早,无法响应点击。有没有100%可靠的方法可以在没有错误的情况下等待元素可点击?
CODE:
//This is how I instantiate WebDriverWait
public static readonly WebDriverWait Wait = new WebDriverWait(Program.Driver, TimeSpan.FromSeconds(15));
//This is an example how I get and click on specific HTML element
Wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath("//img[contains(@src, 'logo')]"))).Click();
任何建议都将不胜感激!
答案 0 :(得分:0)
您可以使用此功能,然后等待并找到元素....这对我来说总能
public static void scrollToElement(final WebDriver webDriver, final Point location)
{
System.out.println("Scrolling to :" +location.x +"," +location.y);
final String sScript = "javascript:window.scrollBy("+location.x+","+location.y+")";
final JavascriptExecutor js = (JavascriptExecutor) webDriver;
js.executeScript(sScript);
}