是否有可能用selenium(phpunit)更改页面的来源?

时间:2015-01-05 12:43:59

标签: selenium phpunit

在我的网站上我有一个复习(不时更新表格数据的功能) 我尝试在测试时停止它。停止此功能的最简单方法是覆盖它。 为此,我需要两个中的一个,写:

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

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

感谢。

编辑: 使它适用于phpunit-selenium:

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

2 个答案:

答案 0 :(得分:1)

您可以使用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);

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

答案 1 :(得分:1)

覆盖你的功能的最简单方法是:

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

使用window.refresher而非refresher表明您的意图是覆盖全局refresher功能。