2011-08-25 46 views
0

我有我已经把一个复杂的屏幕抓取脚本使用Selenium2,硒网络驱动器和PHP绑定脚本,所以在这一切结束时,我有一个驱动Selenium的PHP脚本,它反过来提取一个URL,解析一些Javascript,填写一个表单,等等,然后返回最终我所知道的HTML。它在我的本地计算机上运行良好(作为开发和概念验证环境)。使用第三方单元测试服务运行简单的脚本硒

所以。

对于生产,我需要这个脚本每天自动运行三次。我试图找出在我的服务器上设置所有东西是否会更好(意思是:弄清楚如何让Linux for Firefox继续使用,然后是Java,然后是Selenium2等等......对我来说不是微不足道的; 该死吉姆,我是一个编码器,而不是一个系统管理员!),或者,如果我可以使用一个第三方硒检测服务像Sauce Labs' OnDemand,或任何这些cloud-based Selenium services的。

那些第三方解决方案看起来好像全部设置为“单元测试”,这完全是而不是我在做什么。我不知道那些东西,或者使用PHPUnit,或者使用构建或其他方法进行测试。我只想运行我的简单PHP脚本3x /天,并与Selenium交谈,以驱动浏览器并进行屏幕抓取。

是那些第三方解决方案之一就是我试图完成一个好主意,或者是他们矫枉过正/太远离我(相对简单的)目标是什么?

回答

1

首先,我想让你知道我使用Selenium与Ruby,所以我假设运行你的PHP脚本将启动硒webdriver并运行你的测试...我只会解释如何轻松地运行你的脚本3每天不需要成为系统管理员。

Linux有所谓的cron这是你需要用什么非常稳定和强大的命令。它可以让你安排每天/每小时/任何事情发生的行动。

你想要做的第一件事就是用脚本转到目录。我将把脚本称为script.php。 第一件事情就是要确保你的脚本的最上面一行是:

#!/usr/bin/php 

在你将执行以下命令来使你的文件被系统访问的目录:

chmod +x script.php 

现在设置使用以下命令在cron作业:

crontab -e 

然后把你的工作:

00 4,12,20 * * * /home/sean/script.php 

00 - 意味着在00分钟。

4,12,20 - 是几小时(这是一个24小时制的时钟。)

第一:* - 每天

第二:* - 每个月

第三:* - 星期

的每一天,所以这个脚本将运行的每一天,每一一周,每月四,中午和晚上八点。

很明显,将目录更改为系统上的脚本,并将时间设置为任何想要发生刮擦的时间。

我希望这有助于!

为java/firefox-

首先-Appended的东西,因为我使用Ruby :)借此全部用一粒盐

好吧获取Java/Firefox的运行,你可能会想抢硒独立。你可以抓住它here

然后运行硒服务器你刚才:

java -jar selenium-server-standalone-2.5.0.jar 

您可以运行放在cron作业启动独立的服务器,然后关闭它在你的脚本文件。

+0

感谢Sean-- cron是朝着正确方向迈出的一步,如果我在服务器上完成所有这些工作,我一定会成为解决方案的一部分,尽管我仍然不确定如何让Firefox for Linux去,然后是Java,然后Selenium2等,但这是一个很好的起点。谢谢。 – Eric

+0

我想我明白了一点。让我追加我的答案:) – Sean

+0

我刚刚发现另一个使用PHP的人可能会更好的堆栈溢出答案!祝你好运!看看这里:http://stackoverflow.com/questions/7077090/using-selenium-grid-2-with-phpunit-tests – Sean