2009-11-04 43 views
1

我已经在Firefox上安装Selenium IDE,并设法记录和播放各种网页导航序列。我需要的是通过PHP自动执行所有操作,即运行一个获取最终页面的HTML源代码的PHP脚本(即在导航序列结束时)。 在硒有以出口到PHP的选项,所以我得到这样的:使用Selenium代码下载网页

class Example extends PHPUnit_Extensions_SeleniumTestCase 
{ 
    function setUp() 
    { 
    $this->setBrowser("*chrome"); 
    $this->setBrowserUrl("http://www.example.com/"); 
    } 

    function testMyTestCase() 
    { 
    $this->open("/"); 
    $this->click("link=24"); 
    $this->waitForPageToLoad("30000"); 
    $this->click("link=Test2"); 
    $this->waitForPageToLoad("30000"); 
    $this->click("//td[4]/a/img"); 
    $this->waitForPageToLoad("30000"); 
    $this->type("username", "user"); 
    $this->type("password", "pass"); 
    $this->click("//input[@name='login']"); 
    $this->waitForPageToLoad("30000"); 
    } 
} 

虽然我可以在我的PHP代码中使用此,它似乎并没有做任何事情(因为它只是一个类定义我猜)。我如何获取最后一个源页面?请注意,我不希望我的PHP代码在屏幕上进行导航,而是希望在PHP中进一步处理最终的源代码。

回答

0

导出到PHP选项将导出您的测试的形式,将(使用一些额外的工作)使用Selenium RC PHP驱动程序运行。它不会导出您正在查看的页面。

开箱即用的Selenium IDE不会让您获取页面的最终源代码并对其执行任何操作。如果让我来完成这样的事情我倒是

  1. 重新考虑我的做法

  2. 如果我决定要与硒IDE做到这一点,我会考虑使用用户extension.js机制来编写一个新的Selenium动作,该动作将使用Javascript获取页面源,然后将其张贴到我选择的URL

  3. 使URL位于执行剩余处理的PHP页面上方。

这是一种哈克,将需要一些研究,用户extension.js(不是每个人),并且是必然是脆弱的额外的定制工作。 (见选项#1)

+0

你能详细说明选项#1吗?不需要通过硒。在我浏览一个网站(主要是.aspx)之后,我进入了我想要的页面,并可以通过浏览器“查看源代码”。这是我想要“自动”得到的,例如通过PHP代码。 – Rob 2009-11-05 07:30:42

0

一些使这更容易的事情。

1)当需要通过php来完成时,它需要连接到服务器。

2)所以去下载服务器(硒-rc)。通过以下方式运行它:java -jar selenium-server.jar通过java -jar selenium-server.jar检查参数 - ? (我认为!)。此时重要的将是日志文件位置。

3)服务器将在本地主机和端口4444(以上生成的代码预设的默认值)上启动。

4)尝试连接上面的php代码。检查你的硒服务器日志。它应该有尝试连接的细节。

+0

更多的信息在这里:http://www.phpunit.de/manual/3.1/en/selenium.html。我不确定是否可以动态地转储html(我猜你想看看javascript修改后的标记是什么样的)。真的,我主要使用assert *和截图来了解测试如何进行。 – Koobz 2009-11-05 08:12:37

+0

谢谢。已经安装硒服务器,并设法在cmd窗口中启动它。被“尝试与上面的php代码连接”混淆,即如何提交? – Rob 2009-11-05 08:32:05

+0

使用phpunit。如果你已经在unix系统上安装了pear,你应该在你的路径中使用phpunit命令。 导航到您的测试目录并输入: phpunit TestName.php – Koobz 2009-11-05 20:39:41