2013-08-12 3 views
4

웹 사이트에서 Selenium 테스트를 실행하는 동안 Selenium/Python으로 테스트 할 수없는 플래시 요소가 있습니다. 별도의 터미널 창을 호출하고 Sikuli OCR 테스트를 실행 한 다음 Selenium/Python 테스트로 돌아가고 싶습니다. 나는 이것을 정확히 알아 내지 못했습니다. Sikuli 스크립트를 열고 실행하기위한 새로운 터미널에 대한 인수를 알지 못하는 곳에서 XXX을 붙였습니다.Python (Selenium)에서 Sikuli 스크립트 호출하기

def test_05(self): 
     driver = self.driver 
     driver.get(self.base_url + "/") 
     driver.find_element_by_link_text("Home").click() 
     driver.find_element_by_id("open_popup").click() 
     driver.find_element_by_id("screen_name").send_keys("user") 
     driver.find_element_by_id("password").send_keys("pwd") 
     driver.find_element_by_id("login_submit").click() 
     driver.find_element_by_id("button").click() 
     time.sleep(120) 
     os.system('XXX') 
     os.system('./Sikuli/sikuli-script -r test.sikuli') 

여기에는 몇 가지 잘못된 항목이 있습니다. 어떤 도움이라도 대단히 감사하겠습니다. 나는 이것을 이미 발견 할 수있는 것을 수색하고 읽었지만 모두가 함께 일할 수는 없다.

+0

내가 대신 호출하는 Webdriver 코드와 함께 Sikuli 기능을 Sikuli 자바 API를 사용하고 사용하고 있습니다 Python Sikuli 스크립트. 파이썬에서 그렇게 할 수 없습니까? – Akbar

+0

그건 정확히 내가 묻고있는 것입니다. Sikuli를 가져 오려고하지만 인식 된 모듈이 아닙니다. 주제에 대한 검색이 많을수록 전혀 할 수없는 것처럼 보입니다. 슬퍼. – Dave

답변

2

비슷한 문제가있어서 Sikuli 용 CPython 모듈을 작성했습니다. 모듈은 on GitHub이며, pip install sikuli을 통해 사용할 수 있습니다. pyjnius을 사용하여 포함 된 Sikuli 항아리에 액세스 할 수 있으므로 자이 썬을 사용할 필요가 없으며 Sikuli 자체를 설치할 필요가 없습니다 (녹음 목적으로 권하고 싶지만). 이 모듈은 현재 대부분의 간단한 Sikuli 함수를 다루고 있으므로 많은 유스 케이스를 다루어야합니다.

설치 후 간단하게 from sikuli import *을 시작하게됩니다. 그러나 모범 사례로 사용하려는 기능 만 가져 오는 것이 좋습니다. 이것은 sikuli가 파이썬 자신의 type 함수를 오버라이드하는 type 함수를 가지고 있기 때문에 특히이 모듈에서 중요합니다.

+0

저와 같은 초보자를 안내하는 문서와 예제가 있습니까? – SIslam

+0

이 프로젝트는 ... 작동 상태에있는 것으로 보이지 않습니다. –

1

Selenium에서 Sikuli 코드를 호출 할 때, Selenium과 Sikuli는 모두 Java 기본 바인딩을 가지고 있기 때문에 나의 첫 번째 선택은 TestAutomationEngr의 Java 사용 제안 일 것입니다.

파이썬을 사용하고 싶으므로 자이 썬에서 Selenium을 실행해야한다. Sikuli가 자이 썬이라는 것을 기억하는 것이 중요합니다. 그 이유는 아마도 가져올 수없는 이유 일 것입니다. (다른 이유는 자이 썬의 모듈 경로에는 없다는 것입니다.) 저는 이것을 직접 시도하지는 않았지만 셀레늄에 bug fixed last year이 있었는데 자이 썬에서는 괜찮을 것임을 나타냅니다. 자이 썬에서 직접 Sikuli 코드를 호출하는 경우, 당신은 정상에

from sikuli.Sikuli import * 

를 추가 할 필요가

참고. 이것은 Sikuli IDE가 모든 Sikuli 코드에 암시 적으로이를 추가하기 때문입니다.

마지막으로 명령 줄에서 Sikuli를 호출하십시오. There's an FAQ for that. IDE가없는 버전을 원할 것입니다. 여기서 Java를 호출하고 sikuli-script JAR 파일을 전달합니다.

+0

고마워, 나다니엘. 예, 저는 시클리에게 cl. 파이썬 (자이 썬이 아닌) 솔루션을 정말로 기대하고 있었다. – Dave

0

sikuli 스크립트가 완전히 독립적이어서 한 번만 실행하고 파이썬 스크립트를 다시 제어하려는 경우. 그런 다음 sikuli 스크립트를 호출하고 파이썬 스크립트에서이 배치 파일을 대신 호출하는 배치 파일을 만들 수 있습니다. 일단 배치 파일이 실행 완료되면 종료되고 파이썬 스크립트로 다시 제어를 반환합니다.

샘플 배치 파일 :

@echo off 
call C:\Sikuli\runIDE.cmd -r C:\Automation\Test1.sikuli 
exit 

코드는 파이썬 내부에서 Sikuli 스크립트를 호출 :

import subprocess 

def runSikuliScript(path): 
    filepath = path 
    p = subprocess.Popen(filepath, shell=True, stdout = subprocess.PIPE) 
    stdout, stderr = p.communicate() 
    print "Done Running Sikuli" 

p = "C:\\Automation\\Test1\\test1.bat" 
runSikuliScript(p) 
// You can carry on writing your python code from here on 
관련 문제