当前位置: 首页 > 面试题库 >

登录后保持会话-selenium-javascript

姜智渊
2023-03-14
问题内容

我正在尝试使用Selenium Web驱动程序和node
js自动执行几个页面。我可以登录,但是登录后我想使用由Web驱动程序启动的同一会话,以便可以在受会话保护的页面上进行自动测试。这是我的尝试

async function login(){
    Let  d =  await new Builder()
                        .forBrowser('chrome')
                        .build();
    await d.get('https://demo.textdomain.com/')
    await d.findElement(By.id('username')).sendKeys('admin ')
    await d.findElement(By.id('password')).sendKeys('admin');
    await d.findElement(By.css('button[type="submit"]')).click();
    d.getPageSource().then(function(content) {

            if(content.indexOf('Welcome text') !==-1 ) {
             console.log('Test passed');
             console.log('landing page');
             d.get('https://demo.textdomain.com/landingpage') //this is still going to login page as i cannot use the previous session 
            } else {
                console.log('Test failed');
                return false;
            }
            //driver.quit();
        });

}

login();

登录后我不小心丢弃了浏览器吗?


问题答案:

您可能只在处理计时问题。硒移动 非常快
。比您作为用户进行交互的方式要快得多。因此,它通常以似乎无法预测的方式起作用。但这仅仅是因为Selenium的运行速度比您作为用户的速度快得多。为了解决这个问题,您应该充分利用Selenium的内置功能driver.wait。例如:

const button = driver.wait(
  until.elementLocated(By.id('my-button')), 
  20000
);

button.click();

上面的代码一直等到my-buttonDOM中出现ID 为ID的按钮,然后单击它。最多等待20000毫秒,但是只要按钮可用,它将立即完成。

因此,在您的情况下,如果在用户成功登录后仍有可用的东西,则可以等待该元素,然后再转到代码中的新页面。

顺便说一句,我也不确定为什么要使用getPageSource()?这似乎是获取所需内容的一种非常笨拙的方法。那不是您可以获取内容的元素中的内容吗?

我写了一篇有关如何使用Selenium和Node.js编写可靠的浏览器测试的文章,它可以帮助您更详细地理解本文中的上述代码示例,以及可以用来可靠地等待数据库中各种条件的其他技术。浏览器。



 类似资料:
  • 我有一个与CRUD能力的平均应用程序完全测试与邮递员。我一直试图坚持登录相当长的一段时间,现在没有运气。我已经阅读并尝试了以下内容 护照文档 Toon Io关于登录的博客 快速会话 苏格兰io,节点auth容易 加上一些其他简单的阅读材料(很多这样的问题) 但是我只能注册和登录一个用户,不能用会话持久登录。 下面是我对用户登录的理解,包括我的项目中的代码示例和邮递员结果的截图以及控制台日志。 我有

  • 我正在创建一个Ionic应用程序(iOS和带有电容的Android)。我在我的应用程序中添加了Firebase身份验证,但每次退出应用程序时,我都需要重新登录。 我看到了这个,但是没有太多的文档,并且我尝试了它但是没有工作。我不确定我正确地使用了它,或者在正确的地方添加了代码。https://firebase.google.com/docs/auth/web/manage-users?HL=en

  • 我有一个使用Spring安全LDAP的登录页面。身份验证本身工作正常。在我将表单从常规 HTML 更改为主要字体/ JSF 标记后,发生了此问题。用户通过身份验证后,该页不会重定向到索引页,而是在第二次尝试后。由于某种原因,会话被立即清除。我已经阅读了很多关于使用JSF登录的帖子和教程,以及类似的问题,但到目前为止,它们都没有奏效。 以下是我的一些配置: 登录.xhtml 在首字母/JSF之前 l

  • 我已经创建了一个默认的表单登录身份验证,下面是我的配置。 身份验证工作正常,但最近我在应用程序中添加了会话超时。我的应用程序每5秒轮询一次服务器,因此默认超时不起作用。我在谷歌上找到了下面的过滤器解决方案,并实现了它。 另外,2)我没有得到会话超时错误消息,因为它被重定向到这个页面,一次又一次地转到登录页面。我不能保存这个错误消息,直到用户再次登录。 有什么指示吗?

  • 我正在尝试验证Spring启动后端并获取一些数据 身份验证工作正常。以下是响应标题: 然后我试着从Spring启动中获取项目。这是我的HTTP GET的标题: 它不使用会话cookie,因此会抛出一个错误,说没有标识。 如何使用angular 4.3解决此问题?

  • 为了进一步清晰,我添加了代码段。我正在使用Java Selenium-testng并尝试用3个帐户登录到一个网站zoho.com并验证是否成功。我已经看过一些类似的问题,但还没有找到一个解决方案,适用于我的情况。 我在@BeforeMethod中实例化了ChromeDriver。然后用first帐号登录网站,用@aftermethod关闭浏览器。我必须用Driver=new ChromeDrive