2011-08-10 6 views
0

필자는 Perl/Tk로 작성된 POS (point-of-sale) 애플리케이션을 보유하고 있습니다. 나는 X11 :: GUITest를 사용하여 자동화 된 테스트를 수행하고, 버튼과 다른 위젯 (일반적으로 터치 스크린 구동)에 바인딩 된 단축키를 통해 앱을 구동합니다. 그러나 X11 :: GUITest는 화면에서 텍스트를 "읽는"방법이 없기 때문에 임시 파일을 쓰거나 화면에 데이터를 씀으로써 응용 프로그램을 보강합니다. 그런 다음 테스트 스크립트는 GUI가 아닌 임시 파일을 봅니다. 하지만 X11 :: GUITest를 확장하거나 X11 GUI에서 텍스트 문자열을 긁을 수있는 새로운 CPAN 모듈을 만들고 싶습니다. 나는 그래픽 - 텍스트 변환 이후가 아니다. X 윈도우 시스템, 레이블 텍스트 등의 깊이가 텍스트 문자열로 저장되고 파이프 라인 (?)에서 늦게 비트 맵 형식으로 렌더링된다는 것은 내 (희미한) 이해입니다.X11 GUI에서 텍스트를 추출 하시겠습니까?

누구나이 작업을 수행하는 방법이나 시작 위치에 대한 지침이 있습니까?

그래, 내가 더 나은 MVC 구분하고 실제로 GUI 수준에서 테스트하지 말았어야하지만, 바로 아래에; 그러나 현실은 방해가되었고 그것은 그것이 무엇입니까!

답변

1

프로그램 listres은 라벨 텍스트를 포함하여 위젯에 리소스를 나열하며 텍스트 입력 상자의 내용으로 생각됩니다. 출력물을 직접 사용하여 필요한 것을 추출하거나 원본을보고 어떻게 완료되는지 확인할 수 있습니다.

+0

고맙습니다. listres는 유용한 작은 도구입니다. 나는 전에 그것을 보지 못했습니다. 하지만 그것은 내 애플 리케이션에서 텍스트 문자열을 보여주지 않습니다. 그것은 아마도 각 문자열을 별도의 리소스로 갖고 있지 않기 때문일 것입니다. – Spook

+0

@ Spook, 오, 당신이 어떤 종류의 툴킷을 사용하고 있다고 가정했습니다. 나는 Perl/Tk가 자원을 사용하지 않는다고 생각한다. – lhf

1

이 작업을 수행하는 가장 좋은 방법은 ATK (GTK 응용 프로그램에서 사용)과 같은 접근성 프레임 워크에서 프로그램을 작동시킨 다음이를 사용하여 화면 판독기가 텍스트 음성 변환에 필요한 문자열을 쿼리하는 것입니다 번역. 이것은 Linux Desktop Testing Projectdogtail 테스트 프레임 워크에 의해 취해진 접근법입니다. 기존의 잘 테스트 된 코드를 사용하고 장애가있는 사용자가 응용 프로그램을 더 유용하게 사용할 수있는 보너스를 얻습니다 (미국 내 장애인 법 및 다른 많은 국가의 유사 법률과 같은 법률이 요구하는 것처럼).

응용 프로그램이 libXft2와 같은 최신 글꼴 프레임 워크를 사용하는 경우,이 문자열은 X 서버가 아닌 클라이언트 응용 프로그램에만 있고 문자를 픽스맵으로 변환하는 것은 클라이언트에서 수행되므로 유일한 선택 일 수 있습니다. 텍스트가 앤티 앨리어스 인 경우 레거시 X11 API 대신 사용해야합니다.

레거시 X11 API의 경우에도 텍스트가 비트 맵으로 변환되면 X 서버는 문자열을 저장하지 않지만, 이 경우에 그들을 가로 채기에 부족한 방법을 찾을 수있는 좋은 방법은 없습니다.

+1

고맙습니다. Dogtail은 멋진 작은 도구이며 매우 유용합니다. 나는 그것을 산책하고, 몇 개의 스크립트를 만들었으며, gcalctool과 gedit 등을 구동 할 수있다. 하지만 제 자신의 앱은 AT-SPI 브라우저에 나타나지 않으며 dogtail으로도 구동 할 수 없습니다. 어쨌든 내 앱을 액세스 가능하게 만드는 작업이 조금 더 많았던 것 같습니다. 이제 나는 나의 다음 단계를 알고있다. – Spook

관련 문제