2017-12-04 2 views
-1

저는 현재 3 개 언어로 번역 된 AngularJS 응용 프로그램을 사용하고 있습니다. 우리가 번역을 처리하는 방법은 각 언어에 대한 locale.js 파일을 가지고 있으며 각 파일 내에 키/값 쌍이 있습니다. 예를 들어 :셀렌과 각도기를 사용하여 언어 현지화 테스트 자동화

프랑스어 locale.js

WARNING: "Attention", 

SAVE: "Enregistrer", 

NEW: "Nouveau", 

영어 페이지의 모든 지역화 경우 테스트하기 위해

WARNING: "Warning", 

SAVE: "Save", 

NEW: "New", 

을 locale.js, 우리는 4 언어를 생성 (XXXXXX). 모든 것이 현지화되었는지 테스트하려면 언어를 (XXXXXX)으로 설정하고 응용 프로그램을 통해 XXXXXX 만 확인하십시오.

참고 :

우리는 모든 것이 지역화 된 경우 확인이 프로세스를 자동화 할, 그래서 내가 처음에 테스트를 자동화하는 셀레늄과 각도기를 사용하기 시작 실 거예요 IP 주소와 서버 측 정보와 같은 지역화 할 몇 가지가 있습니다.

내가 그것을 자동화하려고했던 방법에 대한 높은 수준의 아이디어는 :

내가 지역화 할 필요가 없었 각 HTML 태그 앞에 클래스를 추가했다. (class = "notLocalized"). 그런 다음 DOM에서 모든 html 콘텐츠를 가져 왔습니다. 나는 그것을 특정 방식으로 분석해야만했다. 그리고 나서 (XXXXXX) 각 문자열을 비교하고 (notLocalized) 클래스가 있는지 확인했다. 이 클래스가 없으면 텍스트를 현지화해야한다는 것을 알고 있습니다.

이 방법의 주요 문제점은 DOM에서 가져온 텍스트를 구문 분석해야하고 구문 분석 방법이 각 페이지마다 고유해야한다는 것입니다. 그 이유는 왜 내가 돌아 오는 텍스트가 각 페이지와 다르기 때문입니다. 내 접근 방식에는 몇 가지 다른 문제가 있지만 이것이 주된 문제입니다.

제 질문은 Selenium/Protractor가이 용도로 사용하는 가장 좋은 도구입니까? 그렇다면 자동화 된 언어 현지화 테스트를 어떻게 구현 했습니까?

+0

언어를 결정하기 위해 HTML에서'lang' 속성을 사용하지 않는 이유는 무엇입니까? https://www.w3schools.com/tags/ref_language_codes.asp – HaC

+0

내 문제는 언어를 결정하는 것이 아닙니다.나는 현재 나의 언어 로컬라이제이션이 어떻게 설정되어 있는지 설명하고 있었고 나는 로컬라이제이션 테스트를 자동화하는 방법을 찾고있다. lang 속성을 사용하여 현지화 테스트 자동화에 도움이되는 것을 보았습니다. –

답변

0

이것은 내 겸손한 견해이므로 가치있는 것을 생각해보십시오. 나는 페이지의 모든 요소를 ​​잡는 것이 잘못된 접근이라고 생각합니다. 특정 페이지에는 현지화가 필요한 특정 요소가 있어야합니다. 각 페이지의 어떤 요소가 현지화되어야하는지 정확히 알기 때문에 에만이 해당 요소를 확인해야합니다. 나는 이것이 파싱 문제를 제거 할 것이라고 생각한다. 전체 문서를 구문 분석하면 문제가 더 어려워지고 있다고 생각합니다.

다음은이 문제를 해결하는 방법입니다. 패스 한 각 요소의 텍스트가 지역화 된 텍스트인지 확인하는 도우미 클래스/함수를 직접 만듭니다.

function isLocalized(element) { 
    return element.getText() === 'XXXXXX'; 
} 

그런 다음 테스트 할 요소를 확인할 수 있습니다. 다음과 비슷한 것이 트릭을해야합니다 :

it('should be localized',() => { 
    var someElement = element(by.id('#someId')); 
    expect(utils.isLocalized(someElement)).toBe(true); 
} 
+0

답변 해 주셔서 감사합니다! 가까운 장래에 누군가가 페이지에 텍스트를 추가하기로 결정하고 지역화에 실패하면 내 테스트에서 추가 한 html 요소가 현지화되지 않았 음을 감지하고 싶습니다. 페이지의 가장 높은 노드에서 모든 HTML을 가져 오는 이유는 페이지 내의 모든 텍스트를 가져 와서 지역화 된 모든 내용을 현지화 할 수 있기 때문입니다. 즉, 누군가 새로운 텍스트를 추가하면 이론적으로 내 테스트가이를 감지 할 수 있습니다. –

관련 문제