-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathexample.js
More file actions
85 lines (81 loc) · 2.9 KB
/
example.js
File metadata and controls
85 lines (81 loc) · 2.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
var async = require('asyncawait/async'),
await = require('asyncawait/await'),
request = require('request'),
fs = require('fs'),
webdriver = require('selenium-webdriver'),
By = webdriver.By,
driver,
utils = require('./utils.js');
function getProfileLinks() {
var profileLinks = {};
driver.findElements(By.css('dl.threadlastpost.td')).forEach(function(td){
var profileLink;
profileLink = td.findElement(By.tagName("a")).getAttribute('href');
profileLinks[profileLink] = null;
});
return Object.keys(profileLinks);
}
function saveAvatarToFile(fileName,url) {
var bytes;
driver.get(url);
bytes = new Buffer(driver.takeScreenshot(), 'base64');
fs.writeFile(fileName+".png", bytes, 'utf8', function(err) {
if(err) {
this.reject("Couldn't write "+fileName+": "+err.toString());
} else {
this.resolve(true);
}
}.bind(this));
}
saveAvatarToFile = utils.makeTimeoutPromise(saveAvatarToFile,3000);
function main() {
var linkText = [], profileLinks = {};
driver = new webdriver.Builder('./chromedriver')
.withCapabilities({'browserName':'chrome'})
.build();
driver.manage().timeouts().implicitlyWait(1000);
utils.awaitSeleniumDriver(driver);
driver._awaitWebElements = true;
driver.get("http://www.sanriotown.com");
utils.sleep(3000);
driver.switchTo().frame("iframe_header");
console.log("1_________________________________");
driver.findElement(By.id("navbar")).findElements(By.tagName("a"))
.forEach(function(link){
console.log(" "+link.getAttribute("innerHTML"));
});
driver.findElement(By.id("forum")).click();
driver.sleep(3000);
console.log("2_________________________________");
driver.findElements(By.css("h2.forumtitle")).forEach(function(ft){
linkText.push(ft.findElement(By.tagName("a")).getText());
});
linkText.forEach(function(ltxt){
console.log("Click "+ltxt);
driver.findElement(By.linkText(ltxt)).click();
getProfileLinks().forEach(function(plink){
profileLinks[plink] = null;
});
await(driver.navigate().back());
});
console.log("3_________________________________");
Object.keys(profileLinks).forEach(function(url) {
var member_username,img_urls;
driver.get(url);
member_username = driver.findElement(By.className("member_username"))
.getText();
img_urls = driver.findElements(By.id("user_avatar"));
if(!img_urls.length) {
return;
}
console.log(" "+url);
await(saveAvatarToFile(member_username,
img_urls[0].getAttribute('src')));
});
driver.quit();
}
async(main)().catch(async(function(e) {
console.error(e.toString());
console.error(e.stack);
driver.quit();
}));