javascript - 使用 selenium-webdriver 在 javascript 中爬行
问题描述
我正在用 javascript 创建一个爬虫,它可以在链接上填写表单,然后爬取用户名。当我在节点中运行文件时,文件给出了正确的输出,但是当我尝试通过 xampp 使用 php 在 firefox 中运行文件时,它什么也不返回。我正在使用 ubuntu 17.10、节点 v10.10.0、geckodriver v0.21.0、npm v6.4.1?
var firefox = require('selenium-webdriver/firefox');
var webdriver = require('selenium-webdriver');
var screen = {
width: 640,
height: 480
};
var browser = new webdriver.Builder().forBrowser('firefox').setFirefoxOptions(new firefox.Options().headless().windowSize(screen)).build();
//var browser=new webdriver.Builder().withCapabilities(webdriver.Capabilities.firefox()).build();
browser.get('https://webkiosk.jiit.ac.in/')
browser.wait(webdriver.until.elementLocated(webdriver.By.name('MemberCode')),10000).then(function(){return browser.findElement(webdriver.By.name('MemberCode'));}).then(function(temp){temp.sendKeys('17103292')}).then(function(){return browser.findElement(webdriver.By.id('DATE1'));}).then(function(date){date.sendKeys(<date-of-birth>)}).then(function(){return browser.findElement(webdriver.By.name('Password101117'));}).then(function(paswd){paswd.sendKeys(<password>)}).then(function(){ return browser.findElement(webdriver.By.xpath('/html/body/form/table/tbody/tr[3]/td[1]/table/tbody/tr/td[2]/table/tbody/tr[1]/td/div/s/i/font'));}).then(function(font){return font.getText();}).then(function(captcha){browser.findElement(webdriver.By.name('txtcap')).sendKeys(captcha)}).then(function(){return browser.findElement(webdriver.By.name('BTNSubmit'))}).then(function(btn){return btn.click()}).then(function(ret){return browser.get('https://webkiosk.jiit.ac.in/StudentFiles/PersonalFiles/ShowAlertMessageSTUD.jsp');}).then(function(t){return browser.navigate().refresh();}).then(function(ref){return browser.findElement(webdriver.By.xpath('/html/body/center/p[1]/font/b'));}).then(function(nam){return nam.getText();}).then(function(sus){return sus.substring(10,)}).then(function(sub){console.log(sub)});
基本上它正在做的是..(要填写的表格)图像1
如图所示填写表格,点击提交,然后..(填写表格后加载此页面)图片2
爬取右上角“SUSHEN SHROTRIYA”的名字并返回。
运行命令“node .js”后的屏幕截图是[在终端中运行命令] 图3
当我运行命令“node .js”但当我使用像这样的 php 脚本时,它运行顺利
<?php
exec('node <file-name>.js', $x);
print_r $x;
?>
并通过 xampp 使用 localhost 在 Firefox 上运行它,它什么也不返回。
由于我是节点的初学者,所以对于任何愚蠢的错误,我深表歉意。
解决方案
推荐阅读
- javascript - 如何使用 Javascript/jQuery 在文本输入字段中设置输入值的默认格式
- ios - UIDocumentMenuViewController 显示单个浏览选项
- javascript - .Net Core 2.1 - 在 javascript 文件中读取 appsettings.json
- java - 将 jsps 从 Struts 1.x 迁移到 Struts 2.x
- c# - 启动时从托盘恢复同一应用程序的其他实例
- gcc - __int128 对齐段错误与 gcc -O SSE 优化
- raku - 如何在 Perl 6 中对列表的所有元素进行功能性操作?
- vnc - TightVNC 从 cmd 更改密码
- typescript - nest.js @Post 设置响应的内容类型
- android - 使用 Kotlin 在 Android 中 startActivity 后没有任何反应