首页 > 解决方案 > iOS Safari上的`缓存中不存在元素`错误

问题描述

我有一个用 JavaScript 编写的测试,使用 WebdriverIO 和 Mocha 库。测试的想法是检查网站中的元素是否按预期运行。

以下是测试用例的摘录:

describe('My test', () => {

  beforeEach( async () => {
   await browser.url('my_site_url');

      it ('The button should be clickable', async () => {
         let button = await $('#button-name');
         await button.click(); //test fails here on iOS Safari
         ... // the rest of the code
      });

      it ... //other test cases

   });

此测试在 iOS Safari 上失败并引发此错误的问题: Element does not exist in cache

它适用于 Android Chrome、Mac OS Safari、Windows Firefox 和 Windows Chrome。

我还使用 BrowserStack 工具在不同的设备上运行这些测试。该工具提供了测试执行情况的可视化日志。从日志中,我可以直观地看到按钮元素确实正确显示。另外,我通过检查按钮元素手动重新测试了很多次,并且可以确认按钮的名称是正确的。

这里可能是什么问题?从互联网上的答案来看,我怀疑我的元素可能已经过时了,但我不知道这是怎么可能的,因为我使用await它直到我点击它。

标签: javascriptnode.jsmocha.jschaibrowserstack

解决方案


推荐阅读