我有一个Web应用程序,我需要测试它是否可以模拟许多用户同时登录的用户行为,并执行多个文件上传和下载。上传和下载有多个入口点。我继续使用Selenium模仿用户行为。集成的Java,Selenium,TestNG,AutoIT以及使用Selenium Grid连接到各种虚拟机以进行浏览器兼容性测试。支持的浏览器有Chrome,Firefox,IE 8,9,10,11。一切工作正常,除了并行处理窗口对话框。我遇到的任何处理窗口对话框的工具都需要窗口在前面。这是不可能的,当我运行说100个实例。请建议。使用硒测试多个文件上传和下载
我正在添加代码片段。他们不会运行,因为他们被配置为Selenium Grid。
这里是我的java类:
public class Test {
\t
\t RemoteWebDriver driver;
\t
@Test
public void testDownload() {
\t
\t driver.findElement(By.id("Download")).click();
Runtime.getRuntime().exec("C:\\IE11.exe");
\t
}
@BeforeTest
@Parameters({"browser","version","environment","username","password"})
public void launchBrowserAndLogin(String browser, String version, String environment, String username, String password) throws MalformedURLException, InterruptedException {
\t
\t DesiredCapabilities caps = new DesiredCapabilities();
\t \t
\t if(browser.equalsIgnoreCase("chrome")){
\t \t System.setProperty("webdriver.chrome.driver", "C://chromedriver.exe");
\t \t caps = DesiredCapabilities.chrome();
\t }
\t if(browser.equalsIgnoreCase("ie")){
\t \t System.setProperty("webdriver.ie.driver", "C://IEDriverServer.exe");
\t \t caps = DesiredCapabilities.internetExplorer();
\t \t caps.setVersion(version);
\t }
\t \t
\t switch(environment){
\t \t case "trunk" : baseURL = "http://trunk-url"; break;
\t \t case "prod" : baseURL = "https://prod-url"; break;
\t \t default : baseURL = ""; break;
\t }
\t
\t driver = new RemoteWebDriver(new URL("http://localhost/wd/hub"), caps);
\t driver.navigate().to(baseURL); //go to selected URL
\t driver.manage().window().maximize(); //maximize window
\t Thread.sleep(7000);
\t driver.findElement(By.xpath(".//*[@id='username']")).sendKeys(username); //enter Username
\t driver.findElement(By.xpath(".//*[@id='password']")).sendKeys(password); //enter Password
\t driver.findElement(By.xpath(".//*[@id='login']")).click(); //click on Login
\t Thread.sleep(7000);
\t Assert.assertEquals(driver.getTitle(), "Order History");
\t
}
@AfterTest
public void logoutAndTerminateBrowser() throws InterruptedException {
\t
\t driver.findElement(By.xpath(".//*[@id='login-menu']/a")).click(); //click on Logout
\t Thread.sleep(7000);
\t driver.quit();
\t
}
}
正如你所看到的,
调用Runtime.getRuntime()EXEC( “C:\ IE11.exe”) ;
运行AutoIt脚本。在AutoIt脚本只包含:
发送( “S”!)
这只是将ALT + S(命令在IE下载保存弹出杆)。这是并行执行失败的地方。
这里是我的TestNG的XML:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="TestSuite" verbose="2" parallel="tests" thread-count="2">
<test name="IE11_1">
<parameter name="browser" value="ie"/> <parameter name="version" value="11"/> <parameter name="environment" value="trunk"/> <parameter name="username" value="User1"/> <parameter name="password" value="Pass1"/>
<classes><class name="Test"/></classes>
</test>
<test name="IE11_2">
<parameter name="browser" value="ie"/> <parameter name="version" value="11"/> <parameter name="environment" value="trunk"/> <parameter name="username" value="User2"/> <parameter name="password" value="Pass2"/>
<classes><class name="Test"/></classes>
</test>
嗨,欢迎来到SO。请包括一个[最小,完整和可验证示例](http://stackoverflow.com/help/mcve),以便其他人可以复制您的问题并帮助您解决问题。 –