我正在使用Firefox附加HAR导出触发器通过Robotframework/Selenium进行测试自动化。该测试基本上导航到网页并 grep 导出的 har 文件以获取某些表达式。测试有时会失败。
在这些情况下,我注意到har文件中的请求(大约20个)比测试用例使用的浏览器窗口的网络选项卡上的请求(大约70个)少得多。如果我在测试用例停止后手动导出这些请求,则所有请求都将按预期导出。
所以我想,有些东西正在中断导出功能(尽管没有打开其他页面并且浏览器也没有关闭)。我可以使用哑Sleep
但是测试客户端是否有更智能的方法来检查导出是否仍在进行中?一些JS调用或回调?
我试图等待特定数量的导出文件存在,但这不能可靠地工作。
我见过像devtools.netmonitor.har.jsonpCallback
这样的参数,但不知道如何使用它。我的设置是
("devtools.netmonitor.enabled", true);
("devtools.netmonitor.har.compress", false);
("devtools.netmonitor.har.defaultFileName", "Autoexport_%y%m%d_%H%M%S");
("devtools.netmonitor.har.defaultLogDir", <somepath>);
("devtools.netmonitor.har.enableAutoExportToFile", true);
("devtools.netmonitor.har.forceExport", true);
("devtools.netmonitor.har.includeResponseBodies", false);
("devtools.netmonitor.har.jsonp", false);
("devtools.netmonitor.har.jsonpCallback", false);
("devtools.netmonitor.har.pageLoadedTimeout", "2500");
版本:
Firefox 43.0,
Python 2.7.8,
selenium 2.48.0,
robotframework 3.0,
robotframework-selenium2library 1.7.4,
harexporttrigger-0.5.0-beta.7
不是真正的解决方案,而是一种解决方法:自动导出已关闭,导出以编程方式触发,如此处所述。
我以前并不知道这一点。但现在我认为这是一个更好的方法,因为它是
- 更稳定
- 性能更好
- 允许更多控制
设置:
devtools.netmonitor.har.enableAutoExportToFile, false
devtools.netmonitor.har.forceExport, false
extensions.netmonitor.har.enableAutomation, true
extensions.netmonitor.har.contentAPIToken, "test"