Запуск Google Chrome в Amazon EC2 с веб-драйверами Selenium - PullRequest
0 голосов
/ 16 октября 2018

Я пытаюсь запустить Selenium Web driver с Amazon EC2 , но я потерян.Я новичок в Linux, и я не уверен, как установить Google Chrome или позвонить ему после развертывания приложения в Amazon EC2.

Я пытаюсь автоматизировать вход в социальные сети , используя Selenium Web driver.Я использую Node на Backend.Я не хочу запускать хром без головы.

Код работает в Windows, работающей локально.

Вот пример кода для автоматического входа в MySpace с использованием веб-драйвера Selenium в узле:

require('chromedriver');

const request = require('request');
const firefox = require('selenium-webdriver/firefox');
const chrome  = require('selenium-webdriver/chrome');
const { Builder, By, Key, until } = require('selenium-webdriver');

const options = new chrome.Options();
  //options.setChromeBinaryPath(process.env.GOOGLE_CHROME_PATH);
  options.addArguments("--incognito");
  options.addArguments('--disable-gpu');
  options.addArguments('disable-infobars');
  options.addArguments("--disable-extensions");

// delay function
const timeout = ms => new Promise(res => setTimeout(res, ms));

module.exports.myspaceSignin = async (req, res) => {
   let driver = new Builder()
   .forBrowser('chrome')
   .setChromeOptions(options)
   .build();

try {
   let url = 'https://www.myspace.com/login';
   let currentUrl;

   await driver.manage().deleteAllCookies();
   await driver.get(url);
   await driver.getCurrentUrl().then(result => currentUrl = result);
   await driver.getTitle().then(result => console.log(result));

   await driver.findElement(By.id("login.email")).sendKeys("my_email@email.com");
   await driver.findElement(By.id("login.password")).sendKeys("my_p@ssw0rd");
   await driver.findElement(By.xpath("//button[contains(text(), 'Sign In')]")).click();
   await timeout(3000);

   // IF THERE'S INVALID CREDENTIALS WHILE SIGNING IN
   let error = await driver.findElements(By.className("tip-inner"));

   if(error.length > 0){
          let errorMessage = [];

          for(let i = 0; i < error.length; i++)
                  errorMessage.push(await error[i].getText());

          driver.quit();

          if(errorMessage.filter(x => x).length > 0)
                 return res.status(500).json({
                        success : false,
                        message : "There has been an error while signing up with myspace",
                        error   : errorMessage.filter(x => x)
          });
   }

   driver.quit();

   res.status(200).json({
          success: true,
          message: "You successfully signin to your myspace account"
   });
} catch (err) {
          console.log(err);
          driver.quit();

          return res.status(500).json({
                error_message:'Exception occurred while processing, details are: ',
                error: err
          });
   }
}

Мне просто нужно установить Google Chrome, но я не знаю, какую версию я могу использовать для Amazon EC2 или как правильно установить ее.Я добавил драйвер Chrome в мои модули узлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...