小编use*_*020的帖子

Selenium WebDriver Python重新加载html而不刷新页面

我有一个具有自刷新内容的页面(通过 WebSocket),如下所示。虽然内容不断变化,但我的 Firefox Webdriver 只能看到初始内容。我可以通过刷新页面来获取最新的

   driver.navigate.refresh()
Run Code Online (Sandbox Code Playgroud)

但这会导致不必要的流量,除了 Firefox 窗口中已经出现的新内容之外。

我的问题是:我能否获得在 Firefox 窗口中观察到的新鲜 html,而无需重新加载整个页面?

javascript python selenium page-refresh

5
推荐指数
1
解决办法
5476
查看次数

如何使用单元测试覆盖由预处理器#ifdefs 控制的 C++ 遗留代码?

我继承了一个不太大的 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 甚至是嵌套的。

因此,编写单元测试相当困难。我必须构建预处理器变量的所有可能组合并测试每个。

到目前为止,我的(糟糕的)想法是:

  • 从头开始重写代码,可能使用不同的语言。(高风险,太费时)。
  • 用常量替换预处理器变量。(并非总是可行)。

你有没有遇到过这样的情况,你是怎么处理的?

c++ unit-testing legacy-code c-preprocessor

5
推荐指数
1
解决办法
101
查看次数