我有一个具有自刷新内容的页面(通过 WebSocket),如下所示。虽然内容不断变化,但我的 Firefox Webdriver 只能看到初始内容。我可以通过刷新页面来获取最新的
driver.navigate.refresh()
Run Code Online (Sandbox Code Playgroud)
但这会导致不必要的流量,除了 Firefox 窗口中已经出现的新内容之外。
我的问题是:我能否获得在 Firefox 窗口中观察到的新鲜 html,而无需重新加载整个页面?
我继承了一个不太大的 C++ 遗留代码,我目前正在重新设计。到目前为止,我对大部分代码都非常了解并且能够使用它,尽管维护工作很糟糕。我认为主要的困难在于大量使用预处理器指令来控制程序的行为。
考虑以下示例:
void function(){
... // lots of code
#ifdef PARAMETER == 1
do_one_thing();
#elif PARAMETER == 2
do_another_thing();
...//etc
#endif
...//lots of code
}
Run Code Online (Sandbox Code Playgroud)
或者
void function(double arg1,
#ifdef SOME_PP_VAR1 == 5
double arg2,
#endif
)
Run Code Online (Sandbox Code Playgroud)
和类似的东西
#ifdef SOME_PP_VAR2 == 2
typedef myVector std::vector<double>;
#elif SOME_PP_VAR2 == 7
typedef myVector std::vector<int>;
#endif
Run Code Online (Sandbox Code Playgroud)
在全球范围内。甚至
#ifdef SOME_PP_VAR2 == 2
#include "some_header.hpp"
#elif SOME_PP_VAR2 == 7
#include "some_other_header.hpp"
#endif
Run Code Online (Sandbox Code Playgroud)
大约 30 个这样的预处理器变量被设置在一个配置文件中,该文件被传递给构建系统,然后传递给编译器。它基本上控制着一切,几乎存在于任何文件中。顺便说一句,在某些地方,#ifs 甚至是嵌套的。
因此,编写单元测试相当困难。我必须构建预处理器变量的所有可能组合并测试每个。
到目前为止,我的(糟糕的)想法是:
你有没有遇到过这样的情况,你是怎么处理的?