我尝试使用Microsoft的指南在Azure上运行PhantomJS进行负载测试。
测试打开页面,登录并停留在网站上。
拥有约20名用户,效果很好。当我尝试使用30个以上的用户时,会抛出错误:
初始化方法SeleniumWebLoadPoc.SelenumLoadWeb.SetupTest引发了异常。 OpenQA.Selenium.WebDriverException:OpenQA.Selenium.WebDriverException:无法在http://localhost:1341/上启动驱动程序服务。
我的测试代码:
[TestClass]
public class SelenumLoadWeb
{
private IWebDriver _driver;
public TestContext TestContext { get; set; }
private StringBuilder verificationErrors;
private string baseURL;
private bool acceptNextAlert = true;
[TestInitialize]
public void SetupTest()
{
_driver = new PhantomJSDriver();
baseURL = "https://***.com/";
verificationErrors = new StringBuilder();
}
[TestMethod]
[DeploymentItem("SeleniumWebLoadPoc\\OnlyLogin.csv", "SeleniumWebLoadPoc")]
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", "|DataDirectory|\\SeleniumWebLoadPoc\\OnlyLogin.csv", "OnlyLogin#csv", DataAccessMethod.Sequential)]
public void TheSelenumLoadWebTest()
{
var UserName = TestContext.DataRow["UserName"].ToString();
var PassWord = TestContext.DataRow["Pass"].ToString();
// OPEN LOGIN PAGE
TestContext.BeginTimer("SelenumLoadWeb_Navigate");
_driver.Navigate().GoToUrl(baseURL);
TestContext.EndTimer("SelenumLoadWeb_Navigate");
// LOGIN WITH USERNAME AND PASSWORD
_driver.FindElement(By.Id("txtUName")).Click();
_driver.FindElement(By.Id("txtUName")).Clear();
_driver.FindElement(By.Id("txtUName")).SendKeys(UserName);
_driver.FindElement(By.Id("txtPass")).Click();
_driver.FindElement(By.Id("txtPass")).Clear();
_driver.FindElement(By.Id("txtPass")).SendKeys(PassWord);
TestContext.BeginTimer("SelenumLoadWeb_Login");
_driver.FindElement(By.Id("btnOkLogin")).Click();
TestContext.EndTimer("SelenumLoadWeb_Login");
Thread.Sleep(60000);
}
[TestCleanup]
public void TeardownTest()
{
try
{
_driver.Quit();
}
catch (Exception)
{
// Ignore errors if unable to close the browser
}
Assert.AreEqual("", verificationErrors.ToString());
}
private bool IsElementPresent(By by)
{
try
{
_driver.FindElement(by);
return true;
}
catch (NoSuchElementException)
{
return false;
}
}
private bool IsAlertPresent()
{
try
{
_driver.SwitchTo().Alert();
return true;
}
catch (NoAlertPresentException)
{
return false;
}
}
private string CloseAlertAndGetItsText()
{
try
{
IAlert alert = _driver.SwitchTo().Alert();
string alertText = alert.Text;
if (acceptNextAlert)
{
alert.Accept();
}
else
{
alert.Dismiss();
}
return alertText;
}
finally
{
acceptNextAlert = true;
}
}
}
有人尝试使用PhantomJS与许多用户一起运行负载测试吗?