UI automation code on a frame, works fine in Chrome/MSEdge but fails in Firefox and Safari

我只是一个虾纸丫 提交于 2021-02-05 08:09:53

问题


I'm using Karate v0.9.6.RC1. The code is something like this: * switchFrame(1) And input('input[name='cardnumber']','xxxxxxx')

This works fine in Chrome or Edge browser but fails in Firefox or Safari. I tried using different methods like Click, Input, Retry etc after switching to frame but Firefox/Safari doesn't even recognise the object. Also tried different locators. It fails with the below error:

21:14:08.687 request:
101 > POST http://localhost:4444/session/803f524c-3eda-8d46-b1f3-b7ee4c9bc83a/element
101 > Accept-Encoding: gzip,deflate
101 > Connection: Keep-Alive
101 > Content-Length: 59
101 > Content-Type: application/json; charset=UTF-8
101 > Host: localhost:4444
101 > User-Agent: Apache-HttpClient/4.5.12 (Java/1.8.0_242)
{"using":"css selector","value":"input[name='cardnumber']"}

21:14:08.692 response time in milliseconds: 4.54
101 < 404
101 < cache-control: no-cache
101 < content-length: 302
101 < content-type: application/json; charset=utf-8
101 < date: Sun, 12 Apr 2020 13:14:08 GMT
{"value":{"error":"no such element","message":"Unable to locate element: 

input[name='cardnumber']","stacktrace":"WebDriverError@chrome://marionette/content/error.js:175:5\nNoSuchElementError@chrome://marionette/content/error.js:387:5\nelement.find/

21:14:08.692 http response code: 404, response: {"value":{"stacktrace":"WebDriverError@chrome://marionette/content/error.js:175:5\nNoSuchElementError@chrome://marionette/content/error.js:387:5\nelement.find/ POST http://localhost:4444/session/803f524c-3eda-8d46-b1f3-b7ee4c9bc83a/element 102 > Accept-Encoding: gzip,deflate 102 > Connection: Keep-Alive 102 > Content-Length: 59 102 > Content-Type: application/json; charset=UTF-8 102 > Host: localhost:4444 102 > User-Agent: Apache-HttpClient/4.5.12 (Java/1.8.0_242) {"using":"css selector","value":"input[name='cardnumber']"}

I'm not sure if I'm missing something here. Any inputs would be appreciated.


回答1:


Yes I don't think the FF and Safari browsers implement frame-switching correctly. I could be wrong, but having tried a bit and given up - you are welcome to dig into the code / spec and fix this. PR-s welcome !

I also suggest exploring if you can achieve this via JS, here are some ideas: https://stackoverflow.com/a/60800181/143475

Note that Karate is very easy to contribute to, we have a detailed guide: https://github.com/intuit/karate/wiki/Developer-Guide



来源:https://stackoverflow.com/questions/61172303/ui-automation-code-on-a-frame-works-fine-in-chrome-msedge-but-fails-in-firefox

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!