我正在尝试在浏览器中运行节点js代码,即客户端。我使用browserify将我的代码转换为浏览器兼容代码。我下面的代码使用了selenium web-driver和cheerio。我用这个命令转换它
browserify test.js -o btest.js
我的代码如下所示:
var cheerio = require('cheerio');
var webdriver = require('selenium-webdriver'),
By = webdriver.By,
until = webdriver.until;
var driver = new webdriver.Builder()
.forBrowser('chrome')
.build();
function getdata(email,username,password,callBack,errCallBack){
var url = 'https://www.linkedin.com/in/'+username;
driver.get('https://www.linkedin.com/');
driver.findElement(By.xpath('//*[@id="login-email"]')).sendKeys(email);
driver.findElement(By.xpath('//*[@id="login-password"]')).sendKeys(password);
driver.findElement(By.xpath('//*[@id="login-submit"]')).click();
driver.get(url);
attr={};
driver.findElement(By.className('profile-view-grid')).getAttribute("innerHTML").then(function(profile) {
var $= cheerio.load(profile);
attr['ResearchInterest']=$('h2.pv-top-card-section__headline').text().trim();
});
callBack(attr);
}
当我在我的html代码中包含btest.js并尝试运行它时,我收到错误:
Uncaught Error: process.binding is not supported
和
Uncaught ReferenceError: getdata is not defined
我不确定问题是什么。是使用browserify进行转换不正确还是使用browserify无法在浏览器中运行selenium web驱动程序?如果是这样,我的选择是什么。任何有用的文章或博客文章都有类似的例子,我们非常感谢。
答案 0 :(得分:0)
您正在尝试在浏览器中运行webdriver测试代码...这将尝试启动外部进程(作为webdriver可执行文件),因此您无法在浏览器中执行此操作。 您看到的错误是因为browserify不仅仅是一个捆绑器,它会转换您的节点代码以便它可以在浏览器中运行 - 它提供了自己的版本是各种内置的 - 例如缓冲区,控制台等...和进程。 Browserify版本的流程只包含process.nextTick()。