我有一個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),以便其他人可以複製您的問題並幫助您解決問題。 –