Транспортир - Как открыть х количество сайтов и отправить ключи - PullRequest
0 голосов
/ 04 марта 2020

Сейчас я пытаюсь создать скрипт, в котором у меня есть x количество сайтов через json с указанием URL, AMOUNT et c:

{
    "URL": [{
            "https://testing.com/en/p/-12332423/": "999"
        }, {
            "https://testing.com/en/p/-123456/": "123"
        },
        {
            "https://testing.com/en/p/-456436346/": "422"
        }
    ]
}

, где у нас есть ссылка: Сумма.

Что я пытаюсь сделать сейчас, так это то, что я хотел бы открыть каждый сайт, а затем добавить ту сумму, которая дана, и т. Д. c сначала откройте https://testing.com/en/p/-12332423/ с суммой 999

и как только это будет сделано, мы go для следующего сайта, который составляет https://testing.com/en/p/-123456/ количество 123 и т. Д.

На данный момент мне удалось сделать только одну страницу, чтобы работать, имея:

{
    "URL": "https://testing.com/en/p/-12332423/"
}

с кодом:

const userData = require('../globalContent.json');


describe('Add To Cart', function () {



    it('Open Product URL', (done) => {
        browser.driver
            .then(() => browser.waitForAngularEnabled(false))
            .then(() => browser.manage().window().maximize())
            .then(() => browser.get(userData.URL))
            .then(() => done());
    });


    //Hardcoded to write 999
    it('Enter 999 Items', function (done) {

        browser.driver
            .then(() => utils.presenceOf(element(by.id('amount'))))
            .then(() => element(by.id('amount')).clear())
            .then(() => utils.sendKeys(element(by.id('amount')), "999"))
            .then(() => done());

    });

и как только это будет сделано, я хочу перенаправить на указанный c сайт и c

it('Finished all sites', (done) => {
    browser.driver
        .then(() => browser.waitForAngularEnabled(false))
        .then(() => browser.manage().window().maximize())
        .then(() => browser.get("https://finished.com"))
        .then(() => done());
});

однако моя проблема в том, что я не совсем уверен, насколько эффективно делать список с помощью dict, где у меня есть ссылка: количество или есть какой-нибудь более плавный способ. (Приму новые предложения), но я бы хотел, чтобы l oop через каждый сайт, а затем введите сумму.

Open first link from json list dict -> Add amount -> Open second link from json -> Add amount -> Open .... until all sites are done -> Redirect to new page https://finished.com

и мой вопрос: как я могу сделать это с информацией, которая у меня есть сейчас?

Ответы [ 2 ]

1 голос
/ 05 марта 2020

Я предлагаю объединить два ваших шага: Open Product URL и Enter x items в один шаг. Затем вы можете перебирать содержимое вашего массива 'URL'.

describe('Add To Cart', function () {
  const openUrl = function(url) {
    browser.driver
      .then(() => browser.waitForAngularEnabled(false))
      .then(() => browser.manage().window().maximize())
      .then(() => browser.get(url));
  }

  const enterAmount = function(amount) {
    browser.driver
     .then(() => utils.presenceOf(element(by.id('amount'))))
     .then(() => element(by.id('amount')).clear())
     .then(() => utils.sendKeys(element(by.id('amount')), amount))
     .then(() => done());
  }

  it('Open Product URL and enter x items', (done) => {
    for (const data of userData.URL) {
      const url = Object.keys(data)[0]
      const amount = data[url]

      openUrl(url).then(() => {
        enterAmount(amount);   
      }).then(() => done());
    }
  });

 //... finish the site
}

Я также предлагаю исправить объект URL, задав ему соответствующие ключи, например:

{
  "pageProperties": [
    {
        url: "https://testing.com/en/p/-12332423/",
        amount: "999"
    }, {
        url: "https://testing.com/en/p/-123456/",
        amount: "123"
    },
    {
        url: "https://testing.com/en/p/-456436346/",
        value: "422"
    }
   ]
}

Тогда вы получите доступ к его свойствам как:

for (const page of userData.pageProperties) { 
  openUrl(page.url).then(() => {
    enterAmount(page.value);   
  }).then(() => done());
}

// and of course access url by `page.url`
1 голос
/ 04 марта 2020

попробуйте использовать для l oop (вне его блока) для итерации переменной Url json

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