我想要执行以下操作:
- 访问网站
- 点击按钮 => JavaScript 函数将更改 html 的部分内容
- 获取新更改的html的一些内容
所有这些都是自动的
我尝试了为nodejs提供的几种工具,包括 node-cralwer和 PhantomJS
目前,我在 PhantomJS 中运行此代码
page.open('https://www.thegioididong.com/dtdd/iphone-x-256gb', function (status) {
console.log("Status: " + status);
var a = page.evaluate(function () {
document.getElementsByClassName("viewparameterfull")[0].click()
console.log(document.getElementsByClassName('parameterfull')[0].textContent)
return document.getElementsByClassName('parameterfull')[0].textContent
})
phantom.exit();
})
输出是
Status: success
ReferenceError: Can't find variable: getFullSpec
使用 Chrome 调试器,我可以看到 getFullSpec
是一个函数:
单击代码中选定的按钮时触发
可以在页面加载时下载的另一个
js
文件中找到。
我的问题是:
当
PhantomJS
打开使用page.open()
的链接时,它会加载每个文件(js、css.. .) 就像浏览器一样?如果是这样,我如何使用
PhantomJS
来运行该getFullSpec
(它包含在另一个js
文件中)?
最佳答案
- 是的。
- eveluate方法中的js会在页面中执行, 并且 onclick 监听器中存在错误。
您可以打开一个页面,打开devtools,在js源中搜索代码。
关于javascript - 使用 phantomJS 运行源的 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49479976/