【问题标题】:Browser session get expired during script execution浏览器会话在脚本执行期间过期
【发布时间】:2017-09-21 10:56:10
【问题描述】:

网站会话在脚本执行期间过期。我有 4 个类有 15-16 种测试方法。虽然我确实使用来自 testing.xml 的套件执行所有操作。

场景:用户登录后进行搜索

我正在使用以下条件

if(check user is already login)
{
    if(check user is on homepage URL)
    {
       // if user is already on homepage then perform search
    }
    else
    {
        //here my code is  first navigate the page to homepage and then perform search. 
        But the session get destroy once it navigate to home page here and the test get failed as 
    }
}
else
{
   // not login then first do login and then perform search
}

所以我的问题是:

  1. 是我的网站问题还是 webdriver 问题?
  2. 为什么会话在页面导航中退出? driver.get()driver.navigate().to() 我都试过了,但都没有成功。

如果遇到此类问题,有人可以给我线索吗?

【问题讨论】:

  • 这可能是您的网络服务维护会话的方式。
  • 您需要检查会话中断的原因,这可能是您的网站问题,也可能是出于某种原因而设计的。所以自己先弄清楚
  • 您没有提供minimal reproducible example 以便我们可以重现该问题。
  • @JeffC,代码与我提到的条件相同。如果我发布相同的内容,那么它也会显示相同的内容(仅此而已),这就是我没有添加的原因。尽管您的答案在管理代码冗余和如此多的条件之外很有帮助。它可以帮助我在 3 个步骤 +1 中做同样的事情。在执行测试的同时,我仍然遇到用户注销问题。
  • 您尚未发布导致问题的相关代码。

标签: java selenium selenium-webdriver


【解决方案1】:

如果没有更多代码,很难判断实际问题是什么,但您确实遇到了逻辑/DRY 问题。从您的代码中的 cmets,您可以在 3 个不同的地方找到您的搜索代码。更好的逻辑流程应该是这样的

if (user is not logged in)
{
     // log in
}
if (browser is not on homepage URL)
{
    // navigate to home page
}
// now you can do the search

部分问题可能是您似乎在重复使用会话。您需要检查用户是否登录或在主页上这一事实表明您不知道在任何给定点测试的位置。

编写此测试的更好方法是创建一个实例化浏览器的测试,导航到主页,登录用户,进行搜索,然后关闭浏览器。那是一个测试。如果您需要使用不同的搜索条件重复该测试,那么您可以进行数据驱动测试。进行这样的小测试将更容易了解脚本在做什么,并且不太可能出现会话超时等问题。

【讨论】:

  • @JeffC,无论你想说什么,我都已经完成了
猜你喜欢
  • 2014-10-17
  • 1970-01-01
  • 1970-01-01
  • 2013-07-18
  • 1970-01-01
  • 2011-04-21
  • 2015-08-12
  • 2015-11-07
  • 2013-11-17
相关资源
最近更新 更多