使用太多用户运行时,在Azure上使用PhantomJS进行负载测试会引发错误

时间:2017-03-12 13:13:17

标签: azure selenium phantomjs cloud load-testing

我尝试使用Microsoft的指南在Azure上运行PhantomJS进行负载测试。

https://blogs.msdn.microsoft.com/visualstudioalm/2014/11/16/using-selenium-with-cloud-based-load-testing/

测试打开页面,登录并停留在网站上。

拥有约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与许多用户一起运行负载测试吗?

0 个答案:

没有答案