使用Selenium代码下载网页

时间:2009-11-04 17:50:20

标签: php selenium-ide

我在Firefox上安装了Selenium IDE,并设法记录和播放各种网络导航序列。我需要的是通过PHP自动完成所有操作,即运行一个PHP脚本,它获取最终页面的HTML源(即导航序列结束时)。 在Selenium中有一个导出到PHP的选项,所以我得到类似的东西:

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中进一步处理最终的源代码。

2 个答案:

答案 0 :(得分:0)

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

开箱即用的Selenium IDE不允许您获取页面的最终来源并对其执行任何操作。如果我必须完成这样的事情,我会

  1. 重新考虑我的方法

  2. 如果我决定使用Selenium IDE进行此操作,我会考虑使用user-extension.js机制编写一个新的Selenium操作,该操作将使用Javascript来获取页面的源,并且然后将其发布到我选择的网址

  3. 在PHP页面上方创建用于执行其余处理的URL。

  4. 这有点hacky,需要对user-extension.js进行一些研究(并不适合所有人),并且是必须脆弱的额外定制工作。 (见选项#1)

答案 1 :(得分:0)

使这更容易的一些事情。

1)当需要通过php进行操作时,它需要连接到服务器。

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

3)服务器将在localhost和端口4444上启动(上面生成的代码的默认值是预期的)。

4)尝试连接上面的php代码。检查您的selenium-server日志。它应该包含尝试连接的详细信息。