繁体   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