如何在2个不同的浏览器窗口中同时运行2个不同用户的Robot Framework测试?

时间:2014-12-11 18:54:47

标签: firefox selenium selenium-webdriver plone robotframework

在我们的一些Plone插件中,我有一个Robot Framework测试来验证plone.app.lockingbehavior提供的功能

测试打开2个浏览器窗口(一个使用 localhost ,另一个使用 127.0.0.1 )并在Plone站点上记录2个不同的用户以验证是否有实例当一个用户正在编辑内容类型时,将阻止该内容类型。

例如,直到几个月前更新了某些版本的堆栈更改(collective.cover)时才开始使用circa 20 Aug

我注意到当我切换回第一个浏览器窗口时,用户也切换到第二个浏览器窗口上的那个;这不应该在正常操作中发生,但似乎错误地共享了测试中的cookie。

以下是一些截图:

浏览器窗口1:用户所有者编辑 localhost 上的部分内容:

User Owner editing some piece of content

切换到浏览器窗口2:用户网站管理员尝试编辑 127.0.0.1 上的同一段内容:

User Site Administrator trying to edit the same piece of content

切换到浏览器窗口1:用户所有者 localhost 上成为用户站点管理员

User Owner became user Site Administrator

如何在2个不同的浏览器窗口中同时运行2个不同用户的Robot Framework测试?

1 个答案:

答案 0 :(得分:1)

只要浏览器不同 - 即不是两个Firefox实例 - 这应该可以在单个盒子上进行单个测试。

您可以通过将凭据添加到网站网址来使用户与众不同(这适用于Chrome和FF,但会被IE阻止)

代码在C#中,但在python中对于Robot Framework

应该是可行的
// Create IWebdriver instance for user 1
IWebDriver user1InFF = new FirefoxDriver();
user1inFF.Navigate().GoToURL("http://user1:user1Password@localhost");

// Create IWebDriver instance for user 2
IWebDriver user2InChrome = new ChromeDriver();
user2inChrome.Navigate().GoToURL("http://user2:user2Password@127.0.0.1");

// Use both instances in the test

user1InFF.DoSomething();

user2InChrome.CheckSomething();

etc...