在网站上运行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')我确信这里有几个项目是错误的。任何帮助都将不胜感激。我已经搜索和阅读了我能在这上面找到的东西,但是不能让所有的东西都在一起工作。
发布于 2013-12-04 12:22:06
发布于 2014-06-25 02:55:02
如果你的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发布于 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代码,则需要添加
from sikuli.Sikuli import *到顶端去。这是因为Sikuli IDE隐式地将其添加到所有Sikuli代码中。
最后,最后一种方法是从命令行调用Sikuli。There's an FAQ for that。您可能需要“无IDE”版本,在该版本中调用Java并传入sikuli-script JAR文件。
https://stackoverflow.com/questions/18198121
复制相似问题