Java 使用负载性能列表进行Selenium测试

Java 使用负载性能列表进行Selenium测试,java,scala,unit-testing,selenium,scalatest,Java,Scala,Unit Testing,Selenium,Scalatest,我正在尝试使用我的单元测试在浏览器上进行“负载”测试。由于各种原因,我们看到浏览器端的性能下降,因为我们严重依赖打印对话框 我通过ScalaTest进行了以下单元测试: class LoadPrePaidSpec extends FlatSpec with Matchers with Chrome with Eventually { implicit override val patienceConfig = PatienceConfig(timeout = scaled(Span(4

我正在尝试使用我的单元测试在浏览器上进行“负载”测试。由于各种原因,我们看到浏览器端的性能下降,因为我们严重依赖打印对话框

我通过ScalaTest进行了以下单元测试:

class LoadPrePaidSpec extends FlatSpec with Matchers with Chrome with Eventually {

implicit override val patienceConfig =
    PatienceConfig(timeout = scaled(Span(40, Seconds)), interval = scaled(Span(100, Millis)))
def build(csvLine:String):TestCSVHolder ={
    val split = csvLine.split(",")
    TestCSVHolder(memberId = split(0), preSaleCode = split(1),
      prePaidCode = split(2), lastName = split(3), firstName = split(4), badgeName = split(5))
  }

  def memberHelper(member: TestCSVHolder): Unit = {
    //insert member id via prepaid code
    textField("member_id").value = member.prePaidCode
    //fire keyup event
    executeScript("var eventToFire=jQuery.Event(\"keyup\");eventToFire.keyCode=221;eventToFire.which=221;" +
      "$(\"#member_id\").trigger(eventToFire)")
    eventually {
      val eles = webDriver.findElements(By.xpath(s"//*[contains(@id, '${member.memberId}')]"))
      eles.get(0).getTagName
      //We remove the head element because it just says Prep For Print
      val tdEles = (eles.get(0).findElements(By.tagName("td")).toList.tail)
      tdEles(0).getText() should be(member.lastName)
      tdEles(1).getText() should be(member.firstName)
      tdEles(2).getText() should be(member.badgeName)
    }
  }

  "Scanning an ID" should "look up the member" in {
    val member = new TestCSVHolder("100001", "ABCD", "[-100001-ABCD]", "John", "Doe", "JohnDoe")

    go to (url)
    //login
    textField("user_name").value = "mrkaiser"
    webDriver.findElementById("credentials").sendKeys("somepassword")
    click on ("btnLogin")
    //click to pre-paid
    click on linkText("Pre-Paid")
    memberHelper())
    webDriver.quit()
  }
}
但是,当我尝试使用foreach遍历元素列表并传入memberHelper时,在大约5个元素的列表之后,我得到以下堆栈跟踪:

The code passed to eventually never returned normally. Attempted 369 times over 40.110734904 seconds. Last failure message: Index: 0, Size: 0.
ScalaTestFailureLocation: LoadPrePaidSpec at (LoadPrePaidSpec.scala:43)
org.scalatest.exceptions.TestFailedDueToTimeoutException: The code passed to eventually never returned normally. Attempted 369 times over 40.110734904 seconds. Last failure message: Index: 0, Size: 0.
    at org.scalatest.concurrent.Eventually$class.tryTryAgain$1(Eventually.scala:420)
    at org.scalatest.concurrent.Eventually$class.eventually(Eventually.scala:438)
    at LoadPrePaidSpec.eventually(LoadPrePaidSpec.scala:17)
    at LoadPrePaidSpec.memberHelper(LoadPrePaidSpec.scala:43)
    at LoadPrePaidSpec$$anonfun$1$$anonfun$apply$mcV$sp$1.apply(LoadPrePaidSpec.scala:70)
    at LoadPrePaidSpec$$anonfun$1$$anonfun$apply$mcV$sp$1.apply(LoadPrePaidSpec.scala:70)
    at scala.collection.immutable.List.foreach(List.scala:383)
    at LoadPrePaidSpec$$anonfun$1.apply$mcV$sp(LoadPrePaidSpec.scala:70)
    at LoadPrePaidSpec$$anonfun$1.apply(LoadPrePaidSpec.scala:54)
    at LoadPrePaidSpec$$anonfun$1.apply(LoadPrePaidSpec.scala:54)
    at org.scalatest.Transformer$$anonfun$apply$1.apply$mcV$sp(Transformer.scala:22)
    at org.scalatest.OutcomeOf$class.outcomeOf(OutcomeOf.scala:85)
    at org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104)
    at org.scalatest.Transformer.apply(Transformer.scala:22)
    at org.scalatest.Transformer.apply(Transformer.scala:20)
    at org.scalatest.FlatSpecLike$$anon$1.apply(FlatSpecLike.scala:1647)
    at org.scalatest.Suite$class.withFixture(Suite.scala:1122)
    at org.scalatest.FlatSpec.withFixture(FlatSpec.scala:1683)
    at org.scalatest.FlatSpecLike$class.invokeWithFixture$1(FlatSpecLike.scala:1644)
    at org.scalatest.FlatSpecLike$$anonfun$runTest$1.apply(FlatSpecLike.scala:1656)
    at org.scalatest.FlatSpecLike$$anonfun$runTest$1.apply(FlatSpecLike.scala:1656)
    at org.scalatest.SuperEngine.runTestImpl(Engine.scala:306)
    at org.scalatest.FlatSpecLike$class.runTest(FlatSpecLike.scala:1656)
    at org.scalatest.FlatSpec.runTest(FlatSpec.scala:1683)
    at org.scalatest.FlatSpecLike$$anonfun$runTests$1.apply(FlatSpecLike.scala:1714)
    at org.scalatest.FlatSpecLike$$anonfun$runTests$1.apply(FlatSpecLike.scala:1714)
    at org.scalatest.SuperEngine$$anonfun$traverseSubNodes$1$1.apply(Engine.scala:413)
    at org.scalatest.SuperEngine$$anonfun$traverseSubNodes$1$1.apply(Engine.scala:401)
    at scala.collection.immutable.List.foreach(List.scala:383)
    at org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:401)
    at org.scalatest.SuperEngine.org$scalatest$SuperEngine$$runTestsInBranch(Engine.scala:390)
    at org.scalatest.SuperEngine$$anonfun$traverseSubNodes$1$1.apply(Engine.scala:427)
    at org.scalatest.SuperEngine$$anonfun$traverseSubNodes$1$1.apply(Engine.scala:401)
    at scala.collection.immutable.List.foreach(List.scala:383)
    at org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:401)
    at org.scalatest.SuperEngine.org$scalatest$SuperEngine$$runTestsInBranch(Engine.scala:396)
    at org.scalatest.SuperEngine.runTestsImpl(Engine.scala:483)
    at org.scalatest.FlatSpecLike$class.runTests(FlatSpecLike.scala:1714)
    at org.scalatest.FlatSpec.runTests(FlatSpec.scala:1683)
    at org.scalatest.Suite$class.run(Suite.scala:1424)
    at org.scalatest.FlatSpec.org$scalatest$FlatSpecLike$$super$run(FlatSpec.scala:1683)
    at org.scalatest.FlatSpecLike$$anonfun$run$1.apply(FlatSpecLike.scala:1760)
    at org.scalatest.FlatSpecLike$$anonfun$run$1.apply(FlatSpecLike.scala:1760)
    at org.scalatest.SuperEngine.runImpl(Engine.scala:545)
    at org.scalatest.FlatSpecLike$class.run(FlatSpecLike.scala:1760)
    at org.scalatest.FlatSpec.run(FlatSpec.scala:1683)
    at org.scalatest.tools.SuiteRunner.run(SuiteRunner.scala:55)
    at org.scalatest.tools.Runner$$anonfun$doRunRunRunDaDoRunRun$3.apply(Runner.scala:2563)
    at org.scalatest.tools.Runner$$anonfun$doRunRunRunDaDoRunRun$3.apply(Runner.scala:2557)
    at scala.collection.immutable.List.foreach(List.scala:383)
    at org.scalatest.tools.Runner$.doRunRunRunDaDoRunRun(Runner.scala:2557)
    at org.scalatest.tools.Runner$$anonfun$runOptionallyWithPassFailReporter$2.apply(Runner.scala:1044)
    at org.scalatest.tools.Runner$$anonfun$runOptionallyWithPassFailReporter$2.apply(Runner.scala:1043)
    at org.scalatest.tools.Runner$.withClassLoaderAndDispatchReporter(Runner.scala:2722)
    at org.scalatest.tools.Runner$.runOptionallyWithPassFailReporter(Runner.scala:1043)
    at org.scalatest.tools.Runner$.run(Runner.scala:883)
    at org.scalatest.tools.Runner.run(Runner.scala)
    at org.jetbrains.plugins.scala.testingSupport.scalaTest.ScalaTestRunner.runScalaTest2(ScalaTestRunner.java:138)
    at org.jetbrains.plugins.scala.testingSupport.scalaTest.ScalaTestRunner.main(ScalaTestRunner.java:28)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)
Caused by: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
    at java.util.ArrayList.rangeCheck(ArrayList.java:653)
    at java.util.ArrayList.get(ArrayList.java:429)
    at LoadPrePaidSpec$$anonfun$memberHelper$1.apply$mcV$sp(LoadPrePaidSpec.scala:45)
    at LoadPrePaidSpec$$anonfun$memberHelper$1.apply(LoadPrePaidSpec.scala:43)
    at LoadPrePaidSpec$$anonfun$memberHelper$1.apply(LoadPrePaidSpec.scala:43)
    at org.scalatest.concurrent.Eventually$class.makeAValiantAttempt$1(Eventually.scala:394)
    at org.scalatest.concurrent.Eventually$class.tryTryAgain$1(Eventually.scala:408)
    ... 63 more
我的最终目标是从一个文件中实际测试20K范围内的元素,但在我能得到一个像这样的小列表之前,我很为难


我在Scala 2.11.6、Scala测试2.2.0和selenium 2.35.0上使用chromedriver和am

看起来你用lambda打了一个“最终”的电话-试着在那里输入一些日志,看看369次尝试失败的原因。啊,我应该澄清一下,当发出一次运行时,我没有发现异常。当我使用列表并多次运行它时,会出现错误。我试图在浏览器端做一个压力测试。我真正想做的是尝试看看浏览器是否有内存泄漏,以及它如何处理打印。我的团队已经看到IE在打印对话框的负载下(我们每天在每台机器上打印5-6K标签),由于我们正在转向Chrome,我们希望自动化一个测试,让我们检查Chrome是否能够处理负载。