我使用Selenium WebDriver从使用Ajax动态加载它的站点获取一些内容。我创建了一个自定义的Wait类来检查页面上的条件,以确保页面在继续之前已经加载。我使用FluentWait将轮询间隔设置为2并将超时设置为10.但是,我注意到它在时间增量0时第一次检查,然后等待2秒如果条件为假,然后再次检查等。Selenium FluentWait在开始轮询前等待
由于页面需要加载一些时间,所以在第一次检查时它总是错误的,但通常在第二次检查时是正确的。有没有什么办法可以等第2秒之前检查第一次?即如果有必要,在时间2,4和6检查,而不是在0,2,4和6?
感谢, BSG
编辑 我一直在问提为什么我想这种行为 - 毕竟,我使用的是等待它的意思的使用方式。我从中得到的好处第一次返回true:WebDriver显然每次向浏览器发出命令时都会打开一个新的套接字。无论出于何种原因,这些套接字在执行调用后并不总是关闭。当在很短的时间内执行大量调用时(例如,当重复检查某个条件时,这是Wait的作用),可能会用尽虚拟套接字,并且驱动程序崩溃。 (缺少足够的虚拟套接字似乎是Windows 7上的一个已知问题,但我无法修改我的系统。)
我在短时间内发出的驱动程序调用的次数越少,将溢出可用套接字的数量。我观察到,第一个检查从不返回true,因此它只是无故打开一个套接字,使程序更可能崩溃。这就是为什么我想等待。我希望这个解释对搜索信息的人有帮助,他们为什么一直在WebDriver中获取SocketExceptions。
你应该提到你会有什么优势,首先检查返回true。 –
我不完全确定为什么你需要打扰这一点 - 你正在使用'wait'来达到它的目的。 – Arran