У меня есть веб-приложение, которое мне нужно проверить, может ли оно моделировать поведение пользователя для многих пользователей, которые вошли в систему одновременно и выполняют несколько загрузок файлов и загрузок. Существует множество точек входа для загрузки, а также для загрузки. Я продолжил использовать Selenium для имитации поведения пользователей. Интегрированные Java, Selenium, TestNG, AutoIT, а также использование Selenium Grid для подключения к различным виртуальным машинам для тестирования совместимости браузеров. Браузеры поддерживаются Chrome, Firefox, IE 8,9,10,11. Все работает отлично, за исключением обработки диалоговых окон Windows параллельно. Любой инструмент, с которым я сталкивался, который обрабатывает диалоговые окна Windows, требует, чтобы окно было спереди. Это невозможно, когда я запускаю 100 экземпляров. Пожалуйста, предложите.Использование селена для тестирования загрузки и скачивания нескольких файлов
Я добавляю фрагменты кода. Они не будут работать, потому что они настроены для селеновой сетки.
Вот мой 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 просто содержит:
Send ("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), чтобы другие люди могли реплицировать ваш вопрос и помочь вам решить его. –