有一个旋转器叠加出现在页面顶部,我必须等待它完成加载。当它消失后,我就可以点击元素了。但是,当我执行测试以查看元素是否可单击时,它总是返回true。我必须手动添加一个硬编码的等待时间,以使旋转器消失。问题是它非常脆弱和不确定。有时它需要比硬编码时间更长的时间,并产生一个错误。当然,当它花费较少的时间时,它仍然需要等待,并且非常缓慢和浪费时间。这是代码:
echo "Finding Advancedn";
$driver->wait(10)->until( WebDriverExpectedCondition::elementToBeClickable( WebDriverBy::partialLinkText('Advanced') ) );
sleep(3); // spinner
$driver->findElement(WebDriverBy::partialLinkText("Advanced"))->click();
这是当旋转器覆盖比预期的时间长时的错误消息:
Finding Advanced
PHP Fatal error: Uncaught exception 'UnknownServerException' with message 'unknown error: Element is not clickable at point (89, 127). Other element would receive the click: <div id="socialLoader" class="overlay" style="display: block; left: 0px; right: 0px; top: 0px; bottom: 0px; position: absolute;">...</div>
(Session info: chrome=42.0.2311.152)
(Driver info: chromedriver=2.14.313457 (3d645c400edf2e2c500566c9aa096063e707c9cf),platform=Windows NT 6.3 x86_64) (WARNING: The server did not provide any stacktrace information)
我试了下面的
$driver->findElement(WebDriverBy::cssSelector('button.xBtn.remove'))->click();
sleep(1); // spinner
echo "Finding Advancedn";
$driver->wait(10)->until( WebDriverExpectedCondition::invisibilityOfElementLocated( WebDriverBy::id('socialLoader') )); // spinner
$driver->findElement(WebDriverBy::partialLinkText("Advanced"))->click();
得到了这个
寻找先进的PHP致命错误:未捕获异常'UnknownServerException',提示消息'unknown error: Element is not clickable at point(89,127)。其他元素将收到click:…
I tried this
// sleep(1); // spinner
echo "Finding Status Activen";
$driver->wait(10)->until( WebDriverExpectedCondition::elementToBeClickable( WebDriverBy::id('socialLoader') ) );
$driver->wait(10)->until( WebDriverExpectedCondition::invisibilityOfElementLocated( WebDriverBy::id('socialLoader') )); // spinner
得到了这个
查找活动状态
未捕获异常'TimeOutException'
PHP致命错误:C:Usersfinance.operationsDesktopTeads PHP -webdriverlibWebDriverWait.php:69
从另一个角度来看这个问题——使用WebDriverExpectedCondition::stalenessOf
等待旋转器覆盖不再附加到DOM上,或者使用WebDriverExpectedCondition::invisibilityOfElementLocated
等待旋转器覆盖不可见。
使用的预期条件取决于之后旋转器发生了什么——它是完全从DOM中删除还是只是变得不可见。