是否可以使用 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
函数。
在我的站点中,我有一个刷新器(不时更新表格数据的功能) 当我执行 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
函数。