簡體   English   中英

從Python調用Sikuli腳本(Selenium)

[英]Calling to a Sikuli script from Python (Selenium)

在網站上運行Selenium測試時,我有一些我無法使用Selenium / Python測試的Flash元素。 我想呼叫一個單獨的終端窗口,運行Sikuli OCR測試,然后再回到Selenium / Python測試。 我無法完全理解這一點。 我把XXX放在我不知道新終端打開和運行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')

我相信這里有一些錯誤的物品。 任何幫助將不勝感激。 我已經搜索並閱讀了我已經可以找到的內容,但是無法全部一起工作。

我遇到了類似的問題,所以我為Sikuli寫了一個CPython模塊。 該模塊托管在GitHub上 ,可通過pip install sikuli 它可以使用pyjnius訪問包含的Sikuli jar,因此您不必使用Jython甚至安裝Sikuli本身(盡管我建議將其用於錄制目的)。 該模塊目前涵蓋了大多數簡單的Sikuli函數,因此它應該涵蓋了很多用例。

安裝完成后, from sikuli import *一個簡單from sikuli import *將幫助您入門,但作為最佳實踐,我建議您僅導入要使用的功能。 這對於這個模塊尤為重要,因為sikuli有一個type函數,它覆蓋了Python自己的type函數。

為了從Selenium調用Sikuli代碼,我的第一選擇是TestAutomationEngr建議使用Java,因為Selenium和Sikuli都有本機Java綁定。

既然你想使用Python,你應該嘗試在Jython下運行Selenium。 重要的是要記住Sikuli是Jython ,這可能是你無法導入它的原因。 (另一個原因是你沒有在Jython的模塊路徑中使用它。)我自己沒有嘗試過,但去年在Selenium中修復了一個錯誤 ,表明在Jython下它應該沒問題。

請注意,如果直接從Jython調用Sikuli代碼,則需要添加

from sikuli.Sikuli import *

到頂部。 這是因為Sikuli IDE隱式地將其添加到所有Sikuli代碼中。

最后,您的最后一招是從命令行調用Sikuli。 有一個常見問題解答 您可能需要“無IDE”版本,您可以在其中調用Java並傳入sikuli-script JAR文件。

如果你的sikuli腳本是完全獨立的,你只想運行一次然后控制回你的python腳本。 然后,您可以創建一個批處理文件,該文件調用您的sikuli腳本並從您的python腳本調用此批處理文件。 批處理文件運行完畢后,它將退出並將控制權返回給您的python腳本。

樣本批處理文件:

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

從python中調用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM