【问题标题】:How to run Parallel Tests in Selenium using different user credentials?如何使用不同的用户凭据在 Selenium 中运行并行测试?
【发布时间】:2019-12-05 20:35:17
【问题描述】:
我正在尝试为我的自动化测试用例并行运行测试,但我需要使用不同的用户凭据来执行它们。
所以我想让它看起来好像在任何时间点执行的每个线程都不应该以同一用户打开应用程序。我的应用程序会保留用户的视图,如果同一用户以不同线程执行不同操作访问应用程序,则会导致测试用例失败。
因此我需要知道是否有办法使用 testng xml 并行运行测试用例,但是这些并行执行的测试用例应该使用存储在框架中某处的不同登录凭据。
我该怎么做?请帮助我采取必要的方法
【问题讨论】:
-
请参阅:How do I do X? SO 的期望是,提出问题的用户不仅会进行研究以回答他们自己的问题,还会分享研究、代码尝试和结果。这表明您已经花时间尝试帮助自己,它使我们免于重复明显的答案,最重要的是它可以帮助您获得更具体和相关的答案!另见:How to Ask
标签:
java
selenium-webdriver
automated-tests
testng
【解决方案1】:
使用用户名、密码和测试 ID 等值创建文档,并为每个测试分配自己的凭据。在测试中根据测试 ID 从文档凭据中读取。
当然,您可以在每次执行之前分配用户。
【解决方案2】:
在自动化测试用例中,您可以通过读取 csv 文件中的用户名和密码数据,通过不同的用户登录来运行测试。
或者您可以与 Cucumber 集成,在功能文件本身中您可以提供不同的凭据。
【解决方案3】:
你可以试试这个方法。
- 在任何数据库服务器(MySQl 或 Oracle)中创建数据库表 USERS_ACCOUNTS。
- 存储您的用户相关信息。
- 将 IS_CURRENTLY_USED 列添加到您的 USERS_ACCOUNTS 表中,该表存储用户当前是否登录。
- 现在在您的测试脚本的登录方法中,不要从 csv 或配置中获取用户。
- 相反,从 USERS_ACCOUNTS 表中获取用户,其中 IS_CURRENTLY_USED 值为 false。
- 然后将 IS_CURRENTLY_USED 列更新为 true,这样您的其他测试就不会登录用户。
- 确保将上述 2 个步骤作为一个事务执行,以避免测试获得相同的用户。
如果你愿意,我可以分享代码。
【解决方案4】:
当您实例化 WebDriver 时,它将绑定到 Web 浏览器中的唯一会话,这就是为什么当您想使用相同的 WebDriver 进行并行测试时,首先它将与第一个用户连接,然后session 将记住您的凭据,您将无法与其他用户进行测试。
我认为您可以为每个用户实例化一个WebDriver,以便您可以进行并行测试。