当前位置: 首页 > 知识库问答 >
问题:

Webdriver.wait直到没有像预期的那样工作

终逸仙
2023-03-14

我正在使用wedriveri o 4.5:

./node_modules/.bin/wdio -v
v4.5.2

我需要等到某个元素存在,如果它不存在,处理这种情况。

例如:

let element = browser.element('.unexisting');
browser.waitUntil(
        function () {
            return element.isExisting();
        },
        1000,
        'Element is not found.'
);

但如果页面上不存在元素,webdriver会将我的测试标记为失败,并显示消息:“超时10000毫秒。”。尝试减少运行时间或增加测试规格的超时时间(http://webdriver.io/guide/testrunner/timeouts.html); 如果回复promise,确保其得到解决

>

  • 我该如何处理这种情况?

    • 我尝试了try catch块,但不管怎样,我看到了关于超时和测试失败的相同消息
    • 我试过了。waitForExist()但行为是相同的
    • 我尝试使用错误处理程序(但没有帮助)

    browser.on('错误',函数(e){console.log('处理浏览器错误');})

    为什么我看不到我的消息“找不到元素”?

    谢谢!

  • 共有1个答案

    安奇
    2023-03-14

    确保waitForXXX命令所用的时间不超过规范超时时间。如果它确实增加了你的规格超时,在你的例子中是mochaOpts。超时。在这里看到更多http://webdriver.io/guide/testrunner/timeouts.html#Framework-相关超时

     类似资料:
    • 我试图执行一个简单的浏览器测试 浏览器立即启动并关闭,引发以下错误 HTTP请求路径为空意味着什么?新版本的watir是否更改了调用参数? 有人遇到过类似的问题吗? 我的系统是Windows 7 64位,我运行在一个代理之后,浏览器已经配置了一个代理 ---编辑--- 我引入了一个尾随斜杠,但我现在得到了一个新的错误,也得到了以前的错误,每次我都要更改代码并保存它来获得这个错误 ---编辑---

    • 下面是一个类和log4j配置: $vi My.java $vi log4j2.xml 在日志/foo.bar.log中出现和消息。这是我所期望的。但是在日志/foo.log中什么都没有出现,我期望那里有消息。在控制台上也什么都没有出现,但是我期望消息。所以它没有像我预期的那样工作。那么我的错误是什么? 还有LogManager的论点。getLogger必须是记录器的名称。但我也看到了论点是类的例子

    • 我想使用查找从一个集合中获取一些数据并将其放入另一个集合中。 在localfield或foreignfield中写什么都不重要,因为它从player_game_stats中获取所有数据并将其插入player集合中的每个文档中。我想检查localfield和foreignField是否相等,但lookup不检查这一点。我对mongodb使用NoSqlBooster

    • 然后更新状态: 由于应该合并,我希望它是: 但相反,它会吃掉id,状态为: 这是预期的行为吗?只更新嵌套状态对象的一个属性的解决方案是什么?

    • 最后是持久性上下文配置: 我很感谢你的帮助。