Не удается реализовать объектную модель страницы - при попытке получить соединение отказано - PullRequest
0 голосов
/ 13 апреля 2020

Я пытаюсь использовать Selenium, чтобы сделать простой тест на веб-сайте, используя chrome с Page Object Model. Но когда я пытаюсь использовать Page Object Model, я получаю ECONNREFUSED 127.0.0.1:port.

Я новичок с javascript и Selenium.

Код был основан на некоторых примерах Selenium website, но пример о Page Object Model находится в Java.

Используя этот код, он работает:

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

(async function example() {

  var chromeOptions = new chrome.Options();
  chromeOptions.addArguments(["--remote-debugging-port=9333"]);

  let driver = await new Builder().forBrowser('chrome').withCapabilities(chromeOptions).build();

  try {
    await driver.get('http://example.com/login');
    await driver.wait(until.elementLocated(By.name("cnpj")), 10000);

    await driver.findElement(By.name("cnpj")).sendKeys("28145510000176");
    await driver.findElement(By.name("password")).sendKeys("12345678");
    await driver.findElement(By.tagName("button")).click();

    await driver.wait(until.titleIs("Title"), 30000);
  } finally {
    await driver.quit();
  }
})().catch(err => console.log(err));

Попытка объектной модели страницы :

Объект страницы входа:

const { By, Key, until } = require('selenium-webdriver');

class LoginPage {

  constructor(driver) {
    this.driver = driver;
    this.usernameBy = By.name("cnpj");
    this.passwordBy = By.name("password");
    this.submitBtnBy = By.tagName("button");
  }

  async loginValidUser(userName, password) {

    await this.driver.findElement(this.usernameBy).sendKeys(userName);
    await this.driver.findElement(this.passwordBy).sendKeys(password);
    await this.driver.findElement(this.submitBtnBy).click();

    await this.driver.wait(until.titleIs("Title"), 30000);

    //return new HomeDash(this.driver);
  }
}

module.exports = LoginPage;

Индексный файл:

const { Builder, By, Key, until } = require('selenium-webdriver');
const chrome = require('selenium-webdriver/chrome');
const assert = require('assert');
const loginPageClass = require('./loginPage');

(async function teste() {

  var chromeOptions = new chrome.Options();

  chromeOptions.addArguments(["--remote-debugging-port=9222"]);

  let driver = await new Builder().forBrowser('chrome').withCapabilities(chromeOptions).build();

  try {

    await driver.get('http://example.com/login');
    await driver.wait(until.elementLocated(By.name("cnpj")), 10000);

    loginPage = new loginPageClass(driver);
    loginPage.loginValidUser("28145510000176", "12345678").catch(
      err =>  console.log(err)
    );

  } finally {

    await driver.quit();
  }
})().catch(err => console.log(err));

Надеюсь, кто-то может указать мне правильное направление.

PS: Извините, я не могу поделиться сайтом, который я использую для теста.

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