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

Dav*_*rke 5 selenium selenium-ide

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

storeText | @id='ctl00_ContentPlaceHolder1_FormView1' | someValue
Run Code Online (Sandbox Code Playgroud)

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

Dav*_*rke 3

可以使用 javascript 将 Selenium 测试中的值存储到浏览器的本地存储中,例如,如果之前已将值存储到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
Run Code Online (Sandbox Code Playgroud)

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