我正在使用Selenium WebDriver从使用Ajax动态加载它的站点获取一些内容。我创建了一个自定义Wait类来检查页面上的条件,以确保在继续之前页面已加载。我使用FluentWait将轮询间隔设置为2并将超时设置为10.但是,我注意到它在时间增量0处第一次检查,如果条件为假则等待2秒,然后再次检查等。
由于页面需要加载一些时间,因此在第一次检查时始终为false,但通常在第二次检查时为true。有没有办法在第一次检查之前等待2秒?即如有必要,请在2,4和6时检查,而不是在0,2,4和6?
谢谢, BSG
修改 我被要求提及为什么我想要这种行为 - 毕竟,我正在使用等待它的意思。我从中获得的好处是第一次返回true:WebDriver显然每次向浏览器发出命令时都会打开一个新的套接字。无论出于何种原因,这些套接字在调用执行后并不总是被关闭。当在短时间内执行大量调用时(例如,当重复检查条件时,这就是Wait所做的事情),可能会耗尽虚拟套接字,并且驱动程序崩溃。 (缺少足够的虚拟套接字似乎是Windows 7上的已知问题,但我无法修改我的系统。)
我在短时间内发出的驱动程序调用次数越少,超出可用套接字数量的可能性就越小。我观察到第一次检查从不返回true,因此它只是无缘无故地打开一个套接字,使程序更容易崩溃。这就是我想等待的原因。我希望这个解释对于搜索有关他们为什么继续在WebDriver中获取SocketExceptions的信息的人有所帮助。
答案 0 :(得分:1)
显而易见的答案是在第一次检查之前插入time.sleep(2)
(或类似的方法)。这会对你想要做的事情有用吗?