События после clickMouseButton

В одном из моих тестов мышь была перемещена в определенное место, а затем clickMouseButton() называется. Это действие - изменить отображаемые данные (разбивку на страницы.) Однако, после нажатия кнопки, когда я пытаюсь получить текст в столбце таблицы, чтобы убедиться, что данные изменились, данные возвращаются к первоначальному отображению. и мой тест не пройден. Мой тестовый код:

return Remote
    .moveMouseTo(JE.Buttons.Scrolling(), 5, 100)
    .clickMouseButton()
    .end(Infinity)
    .sleep(500)
    .findByXpath('//*[@id="vwNJEAll_grid_header_tbody"]/tr[2]/td[2]/div')
    .getVisibleText()
    .then(function (result) {
        expect(result).not.to.equal(firstSeenJENumber);
    });

Код позади JE.Buttons.Scrolling() является:

return Remote
    .setFindTimeout(5000)
    .findByXpath('//*[@id="vwNJEAll_grid_table_container"]/div[2]/div');

Мне действительно кажется, что локатор в Leadfoot привязан к тому, что находится на странице при первой загрузке. Так ли это, и как мне добиться того, что мне нужно? У меня нет другого объяснения этому, но, надеюсь, у вас есть.

1 ответ

Решение

moveMouseTo не принимает обещание в качестве первого аргумента, так что moveMouseTo Вызов неправильный и не будет делать то, что вы хотите. JE.Buttons.Scrolling() Вызов в вашем примере кода также происходит немедленно (во время построения цепочки команд), он не происходит только один раз moveMouseTo на самом деле выполняется.

Чтобы получить и использовать элемент с вашей функцией абстракции, передайте функцию then а затем используйте элемент:

return Remote
  .then(JE.Buttons.Scrolling)
  .then(function (element) {
    return Remote.moveMouseTo(element, 5, 100);
  })
  // …remainder of test…
Другие вопросы по тегам