new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.id("elementID"))).sendKeys("Debajyoti Sikdar");
点网:
new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.ElementToBeClickable(By.CssSelector("input.entry#ng-touched[id='limit'][name='limit']"))).SendKeys("Debajyoti Sikdar");
1条答案
按热度按时间4uqofj5v1#
如果你能调用
sendKeys()
在调用Thread.sleep()
本质上意味着真正的问题在于隐式等待和/或webdriverwait的实现深潜
在与基于javascript、reactjs、jquery、ajax、vue.js、ember.js、gwt等的应用程序元素交互时,隐式等待并不是那么有效。
在这种情况下,您可以选择使用webdriverwait完全删除隐式等待,因为等待的文档清楚地提到:
警告:不要混合隐式和显式等待。这样做会导致不可预知的等待时间。例如,将隐式等待设置为10秒,显式等待设置为15秒可能会导致20秒后发生超时。
解决方案
首先,您需要重新配置隐式等待
0
具体如下:Python:
java 语:
点网:
而不是诱导webdriverwait
elementToBeClickable()
具体如下:Python:
java 语:
点网:
参考文献
有关详细讨论,请参见:
在selenium中使用隐式等待
为什么selenium的等待。直到_not(ec.invisibility_of_element_located)不等待加载程序消失的时间太长?