const { Builder, By, Key, until, WebDriverWait } = require('selenium-webdriver'); const chrome = require('selenium-webdriver/chrome'); const firefox = require('selenium-webdriver/firefox'); var invalid = []; var tests = ["XaosPrincess", "Piper.Peppercorn", "FaloniaB", "Adam_Lorimer", "Tomo", "DeepRifter", "ChrisLongVR", "JimJ", "cccc9999", "nozaj@hotmail.com", "Vishnu", "DrFran", "Starflower", "fluxintime", "alexqgb@gmail.com", "PublicVRLab", "Lpasca", "troach06", "Nescolet", "PK", "Snitz", "artrevin", "Kim_Flintoff", "toshihoo", "lizabender", "iftf02", "iftf03", "Johnny Magic", "wkarshat", "Notyet", "Ultranique", "Yoofaloof", "dustywizard", "rapomax", "madders", "nara_malone", "RoverVR", "Java2606", "guillefix", "ThePixel8or", "Osuvox", "Andrew23", "Xel-ha", "jasonofthestorm", "Tmoney", "PyxJasta", "MrsSpelling", "marcorsotti", "Madman"]; var username = "robin@highfidelity.io"; var pswd = "Stronghold0"; var INVALID_ERROR_TEXT = "cannot be found, user does not exist"; var IS_ALREADY_A_MEMBER_TEXT = "is already a member."; var driver = new Builder() .forBrowser('firefox') .build(); // (webdriver.Capabilities.firefox()).build(); (async function go() { try { await driver.get('https://highfidelity.com/user/groups/Face2Face'); var loginUNPromise = driver.findElement(By.id('user_login')) var loginPWPromise = driver.findElement(By.id('user_password')); Promise.all([loginUNPromise, loginPWPromise]) .then(([login_un, login_pw]) => { login_un.sendKeys(username); login_pw.sendKeys(pswd); return driver.findElement(By.name('commit')); }) .then(enterButton => { return enterButton.click(); }) .then(() => { return driver.findElement(By.className("panel panel-default members")); // By.id('new_group_membership')); }) .then(elem => { console.log(elem); var submitForm = elem.findElement(By.name('commit')); var enterUsernamesForm = elem.findElement(By.id('group_membership_user')); var errorBox = elem.findElement(By.className("error alert alert-danger")); return Promise.all([enterUsernamesForm, submitForm, errorBox]); }) .then(async function ([enterUN, submitButton, errorBox]) { for (var i = 0; i < tests.length; i++) { await enterName(tests[i], enterUN, submitButton, errorBox); } }) .then(() => { console.log("Invalid username list:"); console.log(invalid); }) .catch(err => console.error(err)); } catch (err) { console.log(err); console.log("Current invalid username list:"); console.log(invalid); } })(); function timeout(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } async function sleep(fn, ...args) { await timeout(3000); return fn(...args); } async function enterName(name, enterUN, submitButton, errorBox) { await enterUN.sendKeys(name) .then(async () => { await driver.sleep(1000); return null; }) .then(() => { return submitButton.click(); }) .then(async () => { await driver.sleep(1000); return null; }) .then(async () => { // document.getElementsByClassName('error alert alert-danger')[0].innerText;") return await errorBox.isDisplayed() }) .then(async bool => { if (bool === true) { var text = await errorBox.getText(); var errorText = text.toLowerCase(); var invalidText = INVALID_ERROR_TEXT.toLowerCase(); var usernameText = name.toLowerCase(); // currently only checks for invalid username if (errorText.indexOf(invalidText) > -1 && errorText.indexOf(usernameText) === 0) { console.log("invalid user!!"); invalid.push(name); } } }) }; function checkTitle() { browser.getTitle() .then(function (title) { console.log(title); }) .catch(function (err) { console.log(err); }); } function handleFailure(err) { console.error("Error is: ", err); quitDriver(); } function quitDriver() { browser.quit(); } // https://highfidelity.com/user/groups/Face2Face // id = "group_membership_user" // group_membership_rank // submit // name=commit value "Add Member"