繁体   English   中英

使用Selenium IDE在JavaScript文件中调用函数

[英]Calling a function in a JavaScript file with Selenium IDE

所以,我正在对我正在研究的网站运行这些Selenium IDE测试。 关于测试本身的一切都运行良好,除非我想在完成后做一些清理工作。 在我的基于MVC3 Razor的站点中,我有一个JavaScript文件,其函数可以从我的Controller中获取JsonResult。 该Controller处理Selenium IDE无法处理的数据库清理。

但是,我很难找到任何关于如何做到这一点的文档。 我知道我可以将JavaScript{ myJavascriptGoesHere }作为测试中一行的值之一,但我似乎找不到告诉它去查找我的清理功能的方法。

Selenium IDE甚至可以做这种事情吗?

如果归结为它,我可以制作一个单独的视图来处理清理,但我真的希望尽可能避免这种情况。

谢谢!

如果要从Selenium IDE执行测试页中存在的JavaScript函数,则需要确保通过window对象访问它。 例如,如果你查看storeEval的引用,它会说:

请注意,默认情况下,代码段将在“selenium”对象本身的上下文中运行,因此这将引用Selenium对象。 使用窗口来引用应用程序的窗口,例如window.document.getElementById('foo')

所以,如果你有自己的函数,例如myFunc() 您需要将其称为window.myFunc()

这对于在不实际提交表单的情况下执行客户端验证非常方便,例如,如果您要测试各种无效且有效的表单字段值。

如果使用runScript ,那应该已经在窗口的上下文中运行了。

实际上,为了访问你的页面javascript空间,你需要获得页面的真实窗口:this.browserbot.getUserWindow()

请参阅此语句以获取页面中的jQuery入口点(如果它当然有jQuery ^^)

https://stackoverflow.com/a/54887281/2143734

这适合我。

    IJavaScriptExecutor js = driver as IJavaScriptExecutor;
    string title = (string)js.ExecuteScript("myJavascriptGoesHere");

在此处使用之前,请确保您的javascript首先运行!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM