我希望能够获取一个字符串列表,将列表分成几部分,并让每个浏览器运行搜索列表的一部分(即 browser1 执行 1/5,browser2 执行 2/5 ......),比如说 Google (我碰巧使用的是 Firefox)。
我将如何使用 Selenium Grid 执行此操作。我已经设置好了,我知道如何将集线器和节点注册到该集线器,但如果它有助于您的解释或解决方案涉及不同类型的实例化,请告诉我。我认为这将有助于其他阅读本文的用户将其投入...
不过,一步一步的解决方案会让我满意。即使有 2 个节点,我也无法让 Selenium 同时运行浏览器。是否需要我使用 TestNG 或 Mable 或其他东西(我不熟悉这些)?我希望有一天能把这个程序开发成一个 Win32 应用程序(C++/C#),所以如果我以后不能封装它以进行分发,它就不能只在“测试套件”中运行。
编辑: 这是我的意思的框架。显然它不会完成任务,因为我现在正在问这个问题。我不知道这是否需要多个驱动程序甚至同一程序的多个副本在内存中运行,所以我将在代码中适当地注释。这绝不是并发的——只是我希望在网格上并发的任务。
public void beginSearch(){
ArrayList<String> searchTerms=new ArrayList<String>();
//Pretend searchTerms is full of 100 Strings!
//Create a new instance of the Firefox Driver
capabilities=DesiredCapabilities.firefox();
//Let's say I have one WebDriver object for now
try{
driver=new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), capabilities);
}catch (MalformedURLException e){
e.printStackTrace();
}
//Go to Google
driver.get("http://www.google.com");
for(int i=0; i<searchTerms.size(); i++){
/*I put the findElement() inside the loop due to experience with it
*not being able to interact with the same element on a different page when
*the URL changes. I think it's due to XPath use internally in the WebElement
*class. Ignore this for now.
*/
element=driver.findElement(By.name("q"));
element.sendKeys(searchTerms.get(i));
element.submit();
}
driver.quit;
}
/*Let's say for the hell of it this is all I wanted to do-how could I make it perform
*this concurrently on the Grid!?
*/