我试图找到一个高度可扩展性和灵活性的解决方案,用于从远程计算机启动Selenium测试,最好通过基于Web的终端,我可以将一些数据传递给我的测试。如何在通过Web端点触发时将输入传递给Java Selenium测试?
我试过同时使用jUnitEE和TestNGEE--加上一个ServletFilter--试图获得我想要的但不能完全满足我所有的要求,所以我不禁想到我正在试着去解决它完全走错了路......有人已经解决了这之前...我只是想不通
我想吃点什么怎么...发生:
- 有人想执行java Selenium测试导航到我的网页。这可能是一个jUnitEE或TestNGEE servlet,也许是另一回事。
- 用户从可用测试列表中选择运行Selenium测试,再加上页面上表单元素的一些值。假设它是2个字符串值 - 一个用于环境,另一个用于用户名。
- 用户按运行测试按钮。
- 服务器将接受选定的测试并开始执行,并为其提供环境和用户指定的值用户名。
附加要求:
- 所有活动应该是线程安全的。即使多个用户同时启动相同的测试,数据也不应该在测试之间交叉。
注:
- 虽然我很高兴有这个,即使只有一个参数的工作,希望是,用户将能够通过任何数量的任意键的列表/值对,然后可用于执行的测试,甚至可能是csv或其他类型的数据文件或从中检索数据的Web端点。
实施例:
- 用户点击端点:http://testLauncherUI.mySite.com/myServlet?test=com.mySite.selenium.flow1&environment=testEnvironment1.mySite.com&username=userNumber1&otherRandomKey=randomValue
testLauncher的myServlet触发包含测试匹配com.mySite.selenium.flow1并且继而该测试导航到的“http: // testEnvironment1.mySite.com',并继续在输入框中输入'userNumber1'文本。
第二用户可以打相同的servlet而现有测试仍在执行,但具有不同的(或相同的)PARAMS:http://testLauncherUI.mySite.com/myServlet?test=com.mySite.selenium.flow1&environment=testEnvironment2.mySite.com&username=userNumber1&otherRandomKey=randomValue
testLauncher的myServlet序幕另一个线程,运行相同的试验,但对指定的网站:'http:// testEnvironment2.mySite。com',然后继续在输入框中输入'userNumber1'文本。
我在这里错过了什么?
在此先感谢!
对于你来说,通过像Jenkins这样的构建工具来暴露这种行为会不会更容易,例如?您可以将他们暴露给Jenkins的构建作业,而不是将您的用户展示给您的自定义页面,而不是完成它? –
谢谢你的意见,克里斯南。出于治理原因,我无法使用jenkins。我的构建工具将需要在我的范围之外的自定义更改。我对“测试”实现几乎完全统治,但构建系统不在此范围之内。 –
John,这是你的servlet方法的一个基本问题。你的每个servlet基本上都会脱离你的实际测试执行的新线程。因此,如果关闭导致servlet停顿,那么最终可能会遇到所有线程都被占用的情况,从而导致Web应用程序无法正常运行。 –