我的问题与那些等待的执行无关。这完全与文档中的语句和超时计算有关。
但是您必须知道如何实现它们才能理解正在发生的事情。这是两种类型的等待混合使用时发生的情况。我正在跳过对讨论不重要的那些步骤。
您的脚本设置了一个隐式等待。
您的脚本会开始显式等待,以检查元素是否存在。显式等待 通过轮询进行 。因此,它将命令发送到浏览器以检查元素的存在。
由于已经设置了隐式等待,发送给浏览器的命令需要10秒钟才能返回失败。
您的显式等待将检查它是否已达到其15s的时间限制。当前等待时间为10秒(加上执行脚本,网络延迟等所需的时间极少),少于15秒。因此,它没有等待完成,而是重新发出与上述步骤2中相同的命令。
由于隐式等待,发送到浏览器的命令需要10秒钟才能返回失败。
当显式等待再次检查其自身的超时时,已经超过15秒,因此超时。
因此,显式等待将轮询两次,每次都需要10秒,这意味着总共需要20秒(加上很少的时间来记账)。
显式等待不执行任何操作来检测和补偿已设置的隐式等待。而且,它不会继续与发送给浏览器的命令并行运行。在执行浏览器命令时,显式等待不会执行任何簿记操作或无法超时。它必须等待浏览器命令完成才能检查它是否应该超时。



