如何使用Selenium在测试之间存储值

时间:2011-10-03 00:40:47

标签: selenium selenium-ide

Selenium能够临时存储数据项,然后在后续测试中检索它们,例如

storeText | @id='ctl00_ContentPlaceHolder1_FormView1' | someValue

当需要跨越测试边界传递值时,这在单个测试中以及同一测试套件中的测试之间也能很好地工作。不幸的是,它在测试套件之间不起作用(这是我们的应用程序的要求,其中包括引用同一对象的许多工作流程)。如何使用Selenium在Test Suite边界存储值?

2 个答案:

答案 0 :(得分:4)

可以使用javascript将来自Selenium Test的值存储到浏览器的本地存储中,例如如果之前已将值存储到 someValue

getEval | this.browserbot.getUserWindow().localStorage.setItem("someValue",storedVars['someValue'])
assertEval | this.browserbot.getUserWindow().localStorage.getItem("someValue") | ${someValue}
storeEval | this.browserbot.getUserWindow().localStorage.getItem("assetLabel") | someValue

在这种情况下, this.browserbot.getUserWindow()会返回应用程序的窗口。这会将 someValue 存储到本地存储中,随后可以将其恢复到Selenium存储的变量中。

答案 1 :(得分:0)

您还可以在运行Selenium测试的代码中实现持久性。如果你正在使用RC,这将是相当微不足道的。 (即,只是直接插入/更新然后检索的数据库查询)。

如果您正在使用Selenese并且无法访问用于持久性的API,您还可以创建一个快速而脏的小网页,将数据存储在数据库中,然后将其读回以用于后续测试运行。显然这不是理想的,但是如果你不能直接从测试中访问持久性存储,它应该可以工作。