gpt4 book ai didi

selenium-webdriver - browser.keys() 不适用于 Firefox 53.0 和 webdriver.io

转载 作者:行者123 更新时间:2023-12-04 00:12:41 24 4
gpt4 key购买 nike

在 Firefox 上,browser.keys 抛出错误。

操作系统:MacOs
火狐版本:53.0.3
壁虎司机:0.16.1
Webdriver.io:4.8

请帮助我如何处理此错误。

这是日志

[17:11:35] 命令发布“/wd/hub/session/97804a03-d52a-4232-9e3c-41e1fac6a9c5/url”
[17:11:41] 命令发布“/wd/hub/session/97804a03-d52a-4232-9e3c-41e1fac6a9c5/refresh”
[17:11:45] 命令获取“/wd/hub/session/97804a03-d52a-4232-9e3c-41e1fac6a9c5/window/current/size”
[17:11:46] 命令发布“/wd/hub/session/97804a03-d52a-4232-9e3c-41e1fac6a9c5/elements”
[17:11:46] 命令获取“/wd/hub/session/97804a03-d52a-4232-9e3c-41e1fac6a9c5/element/0/displayed”
[17:11:46] 命令获取“/wd/hub/session/97804a03-d52a-4232-9e3c-41e1fac6a9c5/element/1/displayed”
[17:11:46] 命令发布“/wd/hub/session/97804a03-d52a-4232-9e3c-41e1fac6a9c5/elements”
[17:11:46] 命令获取“/wd/hub/session/97804a03-d52a-4232-9e3c-41e1fac6a9c5/element/0/displayed”
[17:11:46] 命令获取“/wd/hub/session/97804a03-d52a-4232-9e3c-41e1fac6a9c5/element/1/displayed”
[17:11:46] 命令发布“/wd/hub/session/97804a03-d52a-4232-9e3c-41e1fac6a9c5/elements”
[17:11:47] 命令发布“/wd/hub/session/97804a03-d52a-4232-9e3c-41e1fac6a9c5/element/0/value”
警告:“keys”命令将很快被弃用。请使用不同的命令以避免更新 WebdriverIO 后测试失败。
[17:11:47] 命令发布“/wd/hub/session/97804a03-d52a-4232-9e3c-41e1fac6a9c5/keys”
[17:11:47] 命令获取“/wd/hub/session/97804a03-d52a-4232-9e3c-41e1fac6a9c5/screenshot”
[17:11:48] 保存的屏幕截图:ERROR_firefox_2017-06-03T00-11-47.734Z.png
[17:11:48] 命令删除“/wd/hub/session/97804a03-d52a-4232-9e3c-41e1fac6a9c5/cookie”
错误:sendKeysToActiveElement
构建信息:版本:'3.4.0',修订:'未知',时间:'未知'
系统信息:主机:'xxx.local',ip:'10.142.4.252',os.name:'Mac OS X',os.arch:'x86_64',os.version:'10.12.5'​​,java.version :'1.8.0_131'
驱动程序信息:driver.version:RemoteWebDriver
错误:找不到请求的资源,或者使用映射资源不支持的 HTTP 方法接收到请求。
在 Object.wait (/Users/xxxx/c3web/xxxx/node_modules/fibers/future.js:449:15)
在 Object.keys (/Users/xxxxx/node_modules/wdio-sync/build/index.js:264:31)
在 Object.exports.customCommands.selector (/Users/xxx/c3web/xxxx/teSTLib/browser/customCommands.js:158:17)
在/Users/xxxx/node_modules/wdio-sync/build/index.js:191:29
- - - - -
在键(“Enter”) - index.js:244:37
在 elementIdValue("0", "xxxyyyzzz") - index.js:293:3

最佳答案

正如@iamdanchiv 在他的回答中提到的,browser.keys()将被弃用,但有一个解决方法(我应该为此提交 PR)。

什么browser.keys()幕后的工作是调用/session/:sessionId/keys WebDriver JsonWire 协议(protocol)中的端点。但是,如果您查看 list of endpoints在 W3C Webdriver 的规范中,此端点不在列表中。我相信它以前是列表的一部分,但已被删除。相反,为了发送 key ,规范声明使用 /session/:sessionId/element/:elementId/value端点代替,您可以使用 webdriverio 的 browser.elementIdValue(ID, value)方法来调用。

现在,如果您阅读 /session/:sessionId/keys 的规范, Selenium's documentation on the JsonWireProtocol 中提到使用其他 WebDriver 功能复制实现非常容易。 /session/:sessionId/keys端点只是这样做:

Sends a sequence key strokes to the active element.



我们可以调用一个端点来获取当前事件元素,即 /session/:sessionId/element/active , 映射到 webdriverio 的
browser.elementActive()方法。

在这种情况下,我们需要做的就是重新实现这个 browser.keys()是首先找出事件元素是什么,然后将 key 发送到该元素。

因此,如果您想发送 browser.keys("hello world"),这是解决方法。 :
var result = browser.elementActive();
var activeElement = result.value && (result.value.ELEMENT || result.value["element-6066-11e4-a52e-4f735466cecf"]);
// Newer versions of the webdriver like Gecko/IEDriver return the element as "element-6066-11e4-a52e-4f735466cecf" (which is documented in the W3C specs) instead of "ELEMENT".
if(activeElement){
browser.elementIdValue(activeElement, "hello world");
}

请注意,这不会复制 /session/:sessionId/keys 的行为。确切地说,这也根据 Selenium 的文档执行此操作:

This command is similar to the send keys command in every aspect except the implicit termination: The modifiers are not released at the end of the call. Rather, the state of the modifier keys is kept between calls, so mouse interactions can be performed while modifier keys are depressed.



上述解决方案确实在键序列的末尾隐式释放修饰键,例如“SHIFT”、“CTRL”。所以如果你想按住一个键并进行鼠标交互,那么运气不好的哥们,也许我们必须等待浏览器实现 Webdriver Actions API。但是,如果您只想发送“CTRL”+“C”,您只需发送一个这样的键数组:
var result = browser.elementActive();
var activeElement = result.value && result.value.ELEMENT;
if(activeElement){
browser.elementIdValue(activeElement, ["CTRL", "c"]);
}

关于selenium-webdriver - browser.keys() 不适用于 Firefox 53.0 和 webdriver.io,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44339046/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com