2016-08-29 3 views
1

저는 Behat과 Selenium을 사용하기 시작했습니다. 웹 사이트의 테스트 자동화를하고 있는데 일부 CSS 선택기가 Chrome에서 작동하지만 Firefox에서는 발견되지 않는 문제가 있습니다. 예를 들어Behat CSS 셀렉터는 파이어 폭스가 아닌 크롬에서 작동합니다.

, I는 Behat이있다 :

이어서

I 누르면 ".topmember-resultList .resultListItem의 .resultListInteractions의 DIV를 : n 번째 자식 (1)"

의 'Í 푸시'방법 검색

요소를 선택기로 클릭하고 클릭하십시오.

Chrome에서 정상적으로 작동하지만 Firefox에서는 요소를 찾을 수 없어 테스트가 실패합니다. 그것은 제 n 자녀를 사용할 때만 발생하는 것 같습니다. 그러나 afaik, Firefox (48.0)도이를 지원해야합니다.

+0

두 브라우저에서 수동으로 확인 했습니까? 요소가 동일하게 표시되지 않을 수도 있습니다. 가능한 경우 전체 스택 추적을 제공하십시오. – lauda

+0

이론적으로 이것과 같이 많은 셀렉터를 사용하는 것은 문제가되지 않지만 간단한 테스트를 고려할 수도 있습니다. 예를 들어, '나는 x를보아야한다.'다음에 '나는 x를 누르십시오'라고 말하면서, 모든 선택자를 포기합니다. 링크/버튼에서 볼 텍스트/콘텐츠를 사용하십시오. – twill

+0

이상하게도 nth-child를 nth-of-type으로 바꾸어서 해결 한 것 같습니다. 같은 방식으로 작동하며 Firefox에서도 작동합니다. 요소는 두 브라우저에서 모두 동일하지만 이유는 모르겠지만 나랑 잘 지내. –

답변

0

크롬 테스트에서 파이어 폭스 테스트로 코드를 재활용하려고 할 때 큰 문제가 있습니다.

는 다음을 시도 할 수 있습니다 :

당신이 당신의 테스트에서 충돌이없는 모든 방법/단계를 넣을 수 있습니다 추상적 인 컨텍스트를 만듭니다. 다음 추상 클래스에서 확장하는 두 개의 컨텍스트를 만들 수 있습니다. 하나는 크롬 용이고 하나는 firefox 용입니다. 이 방법을 사용하면 두 브라우저에서 각각 다른 코드를 사용하여 동일한 방법을 사용할 수 있습니다. (behat.yml 파일에서 브라우저 컨텍스트 정의를 구별해야합니다.) 크롬 컨텍스트에서 작업중인 cssSelector를 사용하여 원래의 메서드를 넣을 수 있습니다. Firefox에서는 동일한 방법을 사용하지만 firefox에서 작동하는 CssSelector를 사용하십시오. 아니면 파이어 폭스에서도 좋은 해결책이라고 Xpath selector를 사용하십시오.

희망이 있습니다.

관련 문제