我正在为Web应用程序编写测试。某些命令会弹出对话框,这些对话框具有可见的控件,但有一段时间无法使用。(它们显示为灰色,但Webdriver仍将其视为可见)。
我如何告诉Selenium等待该元素实际可访问,而不仅仅是可见?
try: print "about to look for element" element = WebDriverWait(driver, 10).until(lambda driver : driver.find_element_by_id("createFolderCreateBtn")) print "still looking?" finally: print 'yowp'
这是我尝试过的代码,但是它在可用之前会“看到”按钮,并且基本上会在假定的“等待”之后立即充电。
请注意,我可以在代码中填充十秒钟的睡眠时间,而不是这样,代码可以正常工作,但这是丑陋的,不可靠的且效率低下的。但这确实证明了问题仅在于“ click”命令在控件的可用性之前有所发展。
print time.time() try: print "about to look for element" def find(driver): e = driver.find_element_by_id("createFolderCreateBtn") if (e.get_attribute("disabled")=='true'): return False return e element = WebDriverWait(driver, 10).until(find) print "still looking?" finally: print 'yowp' print "ok, left the loop" print time.time()
这就是我们最终得到的结果。(感谢lukeis和RossPatterson。)请注意,我们必须按id查找所有项,然后按“ disabled”进行过滤。我本来希望使用单一搜索模式,但是您能做什么?