首页 > 解决方案 > 使用 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 上运行它,它什么也不返回。

由于我是节点的初学者,所以对于任何愚蠢的错误,我深表歉意。

标签: javascriptnode.jsfirefoxselenium-webdriver

解决方案


推荐阅读