php casperjs获取内部文本


php-casperjs getting inner text

我正在使用casperjs的php包装器-https://github.com/alwex/php-casperjs

我正在自动化网络上的一些重复作业,我需要访问项目的innerText,但我不完全清楚如何从casperjs浏览器访问dom。

我想在js中我会使用

var arr = document.querySelector('label.input__label--above').innerText;

然而,我不知道如何从php包装器访问相同的数组??我已经用几行代码填写了表格并导航到我想要的页面,但访问dom似乎一点也不明显。

我的包装被称为$casper,所以我一直在使用

$casper->start("google.com") 

举个例子,如果我想访问dom,最终有人能告诉我怎么做吗?

通常这是通过PhantomJS和CasperJS中的evaluate完成的。php casperjs确实提供了evaluate函数,但它不适用于您的用例,因为$casper->evaluate不会从页面上下文返回任何内容,而是对$casper的引用。

这就是拥有这么小包装的代价。它只是缺少CasperJS的很大一部分。您可以使用JavaScript编写CasperJS脚本,并使用exec或其他类似函数从PHP调用它。

但是,您也可以尝试使用通过回调返回textContent的函数来扩展$casper(请注意,innerText在PhantomJS中不可用)。由于CasperJS的异步特性,它必须通过回调来完成。如果不重写包装器的大部分内容,我不完全确定这是否可能。

为了将来参考其他正在努力实现这一目标的人,我搜索了包装器的代码,脚本中最后一页的html在执行时作为数组的一部分返回

$result = $casper->run()

希望这能帮助其他人。