首页 > 解决方案 > isDisplayed() 的替代方案,因为它在 safari 12 中/从 safari 12 中不可用

问题描述

在单击某些元素之前的测试步骤之一中,我使用硒

ExpectedConditions.elementToBeClickable(element)

此方法通过验证元素是否显示来检查可见性

element.isDisplayed()

测试在 browserstack 上运行。

请注意,结合 OS X High Sierra + Safari 11 可以通过此步骤。但是在找到元素并发送请求
/session/:sessionId/element/:id/displayed 后使用 Mojave + Safari 12 我在 selenium 日志响应“未知命令”中看到:

{"value":{"error":"unknown command","message":"The command 'GET \/session\/CD43B950-D8D6-49A4-A0FF-3F459F1F6D86\/element\/node-E721541C-713B-4607-8041-C79138E08704\/displayed' was not found.","stacktrace":""}}

在这里,我看到缺少这样的请求(“显示”): https ://developer.apple.com/documentation/webkit/macos_webdriver_commands_for_safari_12_and_later?language=objc

所以,问题是:是否可以在 Safari 12 中使用 element.isDisplayed() ?我错过了什么吗?如果不可能,请分享可能的解决方法。谢谢

更新。来自苹果支持:

请注意,我们的工程团队已根据所提供的信息确定此问题的行为符合预期。

如果您需要 element.isDisplayed(),我们建议您将 atom 复制到您的存储库中并通过 Execute Script 命令运行它。这就是后来版本的 Selenium 库已经开始做的事情,因为驱动程序不再需要提供它。

澄清:在我的测试中使用硒 2.52

标签: javaseleniummacos-mojavebrowserstacksafaridriver

解决方案


推荐阅读