NoSuchSessionException会话ID为null。调用quit()后使用WebDriver吗?并行运行Java测试时

时间:2018-07-31 16:13:14

标签: java selenium nullpointerexception sessionid

获取NoSuchSessionException会话ID为null。调用quit()后使用WebDriver吗?通过跨浏览器并行运行Java测试时出错。

测试执行看起来不错,但最终出现了NoSuchSessionException错误。我确实知道应该在某处初始化驱动程序,但尚不清楚如何执行该操作。

项目信息:硒WD,java,testng,maven。测试是基于詹金斯构建的,并在saucelabs上运行。

主类如下:

Age | AvgHoursPerMonth
----|-----------------
3   | 16
4   | 4

由主类扩展的RemoteTestBase:

<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString=" 
<%$ ConnectionStrings:EMPYHT_ConnectionString %>"
SelectCommand="SPGETNAMES" SelectCommandType="StoredProcedure"> 
<SelectParameters>
<asp:Parameter Name="tnid" Type="String" DefaultValue="" />
</SelectParameters>
</asp:SqlDataSource>


protected void but_mep_Click(object sender, EventArgs e)
  {
      string tende=Session["TENDER"].ToString();
      SqlDataSource2.SelectParameters["tnid"].DefaultValue = tende;
      grd_tendermedicineslist.DataBind();
      upnl_editquo.Update();
   }

错误日志:

  public class NewCustomerReg extends RemoteTestBase {
  @Test (dataProvider = "browsers")

  public void RegisterNewUser (String browser, String version, String os, 
  Method method) throws Exception {

    this.createRemoteDriver(browser, version, os, method.getName());
    Application app = new Application(driver);

    app.homePage().homePageDisplayed();
    Log.info("Validate Home Page");

    app.homePage().registerToOrder.click();
    Log.info("Click Register To Order link on the home page");

    app.registerToOrderPage().registerAsNewCustomer.click();
    Log.info("Click on Register As New Customer button");

    driver.close();
 }

1 个答案:

答案 0 :(得分:1)

以下是发生的情况的解释:

您正在driver.close()中呼叫RegisterNewUser。这将关闭当前窗口。如果没有打开的窗口,则驱动程序退出。因此,当您的tearDown呼叫driver.quit()时,会话已经结束,您会收到错误消息。

您可以使用的解决方案:

  • 请勿在测试中致电driver.close()并让拆解处理

  • 在拆卸中,检查是否有有效的会话,并且仅在存在会话的情况下呼叫driver.quit()