我的工作场所使用RFT进行端到端测试(除其他外),我们目前正在Internet Explorer中进行此测试(出于兼容性方面的考虑)。我们想开始在Chrome中进行测试,这是我们PROD环境中仅有的其他浏览器(Firefox仅在DEV中可用)。
不幸的是,我们需要克服两个主要障碍:
没有扩展名,我已经能够使用startApp()甚至startBrowser()之类的方法通过RFT启动Chrome。不幸的是,RFT大约需要1.5分钟才能检测到该应用程序已启动(尽管Chrome只需花一秒钟即可启动),一旦启动,我就无法让RFT识别Chrome并允许我访问它HTML。
我尝试过类似的事情:
ProcessTestObject pto = startBrowser("Chrome", url");
getRootObject().enableForTesting((int) pto.getProcessId()); //casting to INT seems to be the only way to get this to return TRUE
诚然,我对RFT的经验很少,而且文档/指南非常稀缺。但是,根据我在代码库中观察到的内容,我应该能够执行以下操作:
BrowserTestObject bto = new BrowserTestObject(pto);
据我了解,如果确实进行了正确的处理,则BrowserTestObject将使我能够查找()HTML元素。
不幸的是,即使root.enableForTesting()
返回true,BrowserTestObject最终还是为null,这告诉我要么我定位了错误的Chrome进程(尽管我不知道如何找到正确的Chrome进程),要么我正在忽略其他东西。
我尝试将Chrome映射为应用程序而不是浏览器,但仍然遇到相同的问题。我只是不了解RFT在后台映射对象的作用,而我为弄清楚它(调试,打印子对象)所做的所有尝试都没有得到回报。
我还应该注意,我今天让我的主管为我安装了Chrome扩展程序,但这仍然失败。即使我以管理员身份运行RFT(也会以管理员身份启动Chrome),RFT也无法将Chrome启用为浏览器环境,因为Chrome似乎阻止了RFT与之交互的Java应用程序。结果,我可以启动Chrome,该扩展程序本身似乎可以运行,但是我仍然无法与Chrome进行交互。例如,如果我尝试将Chrome映射到“对象映射”,则映射工具将突出显示元素约一秒钟,然后挂起至少5分钟,然后最终引发异常并失败。
有人知道是否有一种方法可以将Chrome映射为TestObject,从而允许我们访问其HTML?如何确定应该使用哪个Chrome进程(假设只有一个进程可以执行所有操作)?
地狱,有谁知道我在哪里可以找到不错的RFT教程?