首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Python调用Sikuli脚本(Selenium)

从Python调用Sikuli脚本(Selenium)
EN

Stack Overflow用户
提问于 2013-08-13 07:08:05
回答 3查看 18.3K关注 0票数 7

在网站上运行Selenium测试时,我有一些无法使用Selenium/Python进行测试的Flash元素。我想调用一个单独的终端窗口,运行Sikuli OCR测试,然后返回到Selenium/Python测试。我还不能准确地弄清楚这一点。我把XXX放在我不知道打开和运行Sikuli脚本的新终端的参数的地方。

代码语言:javascript
复制
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')

我确信这里有几个项目是错误的。任何帮助都将不胜感激。我已经搜索和阅读了我能在这上面找到的东西,但是不能让所有的东西都在一起工作。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-12-04 12:22:06

我遇到了类似的问题,所以我为Sikuli编写了一个CPython模块。该模块由on GitHub托管,并可通过pip install sikuli获得。它能够使用pyjnius访问包含的Sikuli jar,因此您不必使用Jython,甚至不需要安装Sikuli本身(尽管我建议将其用于记录目的)。该模块目前涵盖了大多数更简单的Sikuli函数,因此它应该涵盖许多用例。

安装之后,一个简单的from sikuli import *就可以让你上手了,但作为最佳实践,我建议只导入你想要使用的函数。这对于这个模块特别重要,因为sikuli有一个覆盖Python自己的type函数的type函数。

票数 3
EN

Stack Overflow用户

发布于 2014-06-25 02:55:02

如果你的sikuli脚本是完全独立的,你只想运行它一次,然后就可以控制你的python脚本了。然后,您可以创建一个批处理文件,该文件调用您的sikuli脚本,并从您的python脚本调用此批处理文件。一旦批处理文件运行完毕,它就会退出并将控制权返回给您的python脚本。

示例批处理文件:

代码语言:javascript
复制
@echo off
call C:\Sikuli\runIDE.cmd -r C:\Automation\Test1.sikuli
exit

从python内部调用Sikuli脚本的代码片段:

代码语言:javascript
复制
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
票数 3
EN

Stack Overflow用户

发布于 2013-08-14 08:04:40

为了从Selenium调用Sikuli代码,我的第一选择是TestAutomationEngr建议使用Java,因为Selenium和Sikuli都有本机Java绑定。

由于您希望使用Python,因此应该尝试在Jython下运行Selenium。重要的是要记住,Sikuli是Jython,这可能是您无法导入它的原因。(另一个原因是在Jython的模块路径中没有它。)我自己还没有尝试过,但是Selenium中有一个bug fixed last year,它表明在Jython下应该没问题。

请注意,如果直接从Jython调用Sikuli代码,则需要添加

代码语言:javascript
复制
from sikuli.Sikuli import *

到顶端去。这是因为Sikuli IDE隐式地将其添加到所有Sikuli代码中。

最后,最后一种方法是从命令行调用Sikuli。There's an FAQ for that。您可能需要“无IDE”版本,在该版本中调用Java并传入sikuli-script JAR文件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18198121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档