是否可以使用 selenium (phpunit) 更改页面的源代码?

is it possible change the source of the page with selenium (phpunit)?

在我的站点中,我有一个刷新器(不时更新表格数据的功能) 当我执行 tests.the 停止此功能的最简单方法是覆盖它时,我会尝试停止它。 为此,我需要两者之一,写:

function refresher(){}console.log 或者只是注入 <script>function refresher(){}</script>

我的问题:如何使用 selenium 写入页面源代码?

谢谢。

编辑: 使其与 phpunit-selenium 一起工作:

$script = file_get_contents( "script.js" );
$this->execute( array(
         'script' => $script,
         'args'  => array()
));

您可以使用 JavascriptExecutor 执行此操作。像这样:

JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("read js from file");

而你的js内容应该是这样的:

var script = document.createElement( 'script' );
script.type = 'text/javascript';
script.text  = "function refresher(){}" 
document.body.appendChild(script);

这将满足您的需求。但是仔细想想,为什么你真的要这样做。

覆盖函数的最简单方法如下:

JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("window.refresher = function () {};");

使用 window.refresher 而不是 refresher 表明您的意图是覆盖全局 refresher 函数。