현재 WebdriverJS 및 PhantomJS를 사용하여 응용 프로그램 테스트 제품군을 작성하고 있습니다. 테스트가 제대로 작동하는지 확인하기 위해 먼저 Chrome을 통해 실행하고 정상적으로 작동합니다. 그러나 PhantomJS 용 Chrome을 교체하면 테스트가 중단됩니다.WebdriverJS/IO & PhantomJS - 특성 선택기가있는 클릭 핸들러가 PhantomJS에서 작동하지 않습니다.
이 질문 (WebDriver PhantomJS Unable to find element, but works fine with Firefox)은 매우 유사한 문제를 개괄하고 있지만 해결 된 솔루션은 도움이되지 않습니다. 여기
는 PhantomJS에 크롬에서 작동 가지의 유형의 거친 예,하지만하지 : PhantomJS에서 실행하면var client = webdriverjs.remote({
desiredCapabilities: {
browserName: 'chrome'
},
logLevel: 'silent'
});
client.waitForExist("[data-id='1568911']", function(e){
client.click("[data-id='1568911']", function(e){
assert(!e, "Should click on a specific element:" + element);
});
});
, 내가 분명히 먼저 WebdriverJS 옵션을 변경 :
var client = webdriverjs.remote({
desiredCapabilities: {
browserName: 'phantomjs',
'phantomjs.binary.path': "path/to/phantomjs"
},
logLevel: 'silent'
});
하지만 테스트를 실행하고 logLevel을 'verbose'로 설정하면 아래와 같은 오류 메시지가 표시됩니다.
[12:43:34]: COMMAND POST "/wd/hub/session/eb2b0a4b-e659-4607-bec0-82209bd6539a/element"
[12:43:34]: DATA {"using":"css selector","value":"[data-id='1568911']"}
[12:43:35]: ERROR UnknownError An unknown server-side error occurred while processing the command.
{"errorMessage":"Unable to find element with css selector '[data-id='1568911']'","request":{"headers":{"Accept-Encoding":"gzip,deflate","Connection":"Keep-Alive","Content-Length":"54","Content-Type":"application/json; charset=utf-8","Host":"localhost:12784","User-Agent":"Apache-HttpClient/4.3.2 (java 1.5)"},"httpVersion":"1.1","method":"POST","post":"{\"using\":\"css selector\",\"value\":\"[data-id='1568911']\"}","url":"/element","urlParsed":{"anchor":"","query":"","file":"element","directory":"/","path":"/element","relative":"/element","port":"","host":"","password":"","user":"","userInfo":"","authority":"","protocol":"","source":"/element","queryKey":{},"chunks":["element"]},"urlOriginal":"/session/2e1ff0a0-68d7-11e4-ad4c-3105ad572a89/element"}}
"[data-id = '1568911']"또는 심지어 "#foo"와 같은 일반적인 CSS2 + 선택기가 WebdriverJS를 통해 PhantomJS에서 작동하지 않는 이유는 무엇입니까? PhantomJS 버그, WebdriverJS 버그 또는 구현시 실수 한 점입니까?
페이지를 모른 채 대답하는 것은 불가능합니다. 일부 사이트에서 크기에 따라 다른 마크 업을 제공하기 때문에 사용자 에이전트를 [Chrome 13] (https://gist.github.com/artjomb/8a3f3a95900a3fe800bc)으로 설정하고 뷰포트를 데스크톱과 비슷한 것으로 설정해 보았습니다. 스크린 샷을 찍거나 소스 코드를 인쇄하여 올바른 페이지에 있는지 확인 했습니까? –
기본 테스트의 일부가 통과하므로 정확한 페이지에 있음을 알고 있습니다. 뷰포트를 생각하지는 않았지만 차이가 발생하지 않은 것으로 보입니다. 나는 "Chrome 13"사용자 에이전트에 대해 다소 혼란 스럽다. 어떻게 적용합니까? – Charlie
또한 내 제목을 편집하는 데 신경 쓰지 않기를 바랍니다. 문제의 원인인지 아닌지 확신 할 수 없어서 WebdriverIO/JS에 대한 언급을 계속하고 싶습니다. – Charlie