我正在为一个safari自动执行Web应用程序的测试...。 但我有麻烦。看来webdriverIO与Safari搭配使用不太好。 我的环境是: wdio:v4.13.1 节点:v10.8.0
我尝试获取输入字段的值
const value = browser.getValue('input.xxxxxxxxx')
但我有例外
The command 'GET /session/E5218F3F-7FE1-43D5-A231-A4B8CCB2C599/element/node-807A67A6-E0E8-4AD7-A505-9ED62ECD6FE6/property/value' was not found.
running safari
Error: The command 'GET /session/E5218F3F-7FE1-43D5-A231-A4B8CCB2C599/element/node-807A67A6-E0E8-4AD7-A505-9ED62ECD6FE6/property/value' was not found.
at elementIdProperty("node-807A67A6-E0E8-4AD7-A505-9ED62ECD6FE6", "value") - getValue.js:35:54
但是,如果我使用的是Chrome,则可以完美运行。 我还尝试了一些更俗气的方式,例如
const value = browser.execute("document.querySelector('input.xxxxxxxx')")
console.log(value)
// gives me this
{ sessionId: '40DD4190-CB6D-4188-962F-9059D96C0441',
value: null,
_status: 0 }
无法找到解决方法。有人可以帮忙吗?
我还发现点击也不适用于野生动物园。它将抱怨该元素不可见,但该元素在那儿显然可见。 我的解决方法是
browser.execute("document.querySelector('.popup-menu-items li).click()")
在chrome中,我不需要执行此肮脏的解决方法。 使用webdriverIO在野生动物园中进行测试确实很痛苦。
答案 0 :(得分:0)
这似乎与硒有关,而不是webdriverio。
在Google上快速搜索为我提供了这个官方设置页面: https://developer.apple.com/documentation/webkit/testing_with_webdriver_in_safari
如果这样做不可行,我相信您应该在硒方面进行更多的研究。
答案 1 :(得分:0)
昨天我花了太多时间研究此问题,因为在带有wdio v4.13.2的Safari上运行时遇到相同的错误
错误消息很正确,没有命令:
GET /session/:sessionId/element/:id/property/:name
我们真正想做的是:
GET /session/:sessionId/element/:id/attribute/:name
我发现一些文档列出了可以进行here的呼叫
如果您在webdriverio中查看函数getValue
,它将调用它自己的名为elementIdProperty
的函数,该函数向上述URL wd/hub/session/"sessionId"/element/"elementId"/property/value
发出请求。但是,该函数中有一个条件语句,说如果它是未知命令,则应调用另一个名为elementIdAttribute
的函数,该函数向正确的URL发出请求,以/attribute/value
结尾。我的猜测是,当您在Chrome中运行它时,它可以识别未知命令的响应,而当您在Safari中运行时,它无法识别。当我尝试在浏览器中手动发出请求时,响应看起来有所不同。所有这些都使查找和解决问题感到非常沮丧。
我的解决方法是直接从webdriverio直接使用功能getAttribute
,如下所示:
const value = browser.getAttribute(selector, 'value');
然后我们可以查看他们是否会在更高版本的webdriverio中对其进行修复。