mCustomScrollbar исчезает после нажатия на элемент страницы с помощью веб-драйвера - PullRequest
0 голосов
/ 11 сентября 2018

Я пишу автоматизацию Webdriver для веб-приложения, которое использует mCustomScrollbar. Для определенного теста мне нужно прокрутить страницу, пока не появится определенный элемент, а затем щелкнуть этот элемент страницы. Когда я делаю это, используя свою автоматизацию, вся полоса прокрутки исчезает (то есть стрелки вверх и вниз, дорожка и полоса перетаскивания).

Примечание:

  1. Это происходит независимо от того, прокручиваю ли я, перетаскивая полосу прокрутки вниз или щелкая стрелку вниз в нижней части полосы прокрутки.
  2. Это не происходит, если я не прокручиваю сначала, а просто нажимаю на элемент страницы, который изначально видим.
  3. Это не происходит, когда я выполняю эти же шаги вручную, используя приложение.

Я проследил это поведение до файла jquery.mCustomScrollbar.js, строка 1777:

$(".mCSB_" + d.idx + "_scrollbar").css("visibility", "hidden"); /* hide scrollbar(s) */

Это внутри следующей функции:

/* sets content wrapper scrollTop/scrollLeft always to 0 */
    _wrapperScroll = function () {
      var $this = $(this), d = $this.data(pluginPfx),
        namespace = pluginPfx + "_" + d.idx,
        wrapper = $("#mCSB_" + d.idx + "_container").parent();
      wrapper.bind("scroll." + namespace, function (e) {
        if (wrapper.scrollTop() !== 0 || wrapper.scrollLeft() !== 0) {
          $(".mCSB_" + d.idx + "_scrollbar").css("visibility", "hidden"); /* hide scrollbar(s) */
        }
      });
    },

Вопросы:

  1. Почему это происходит, когда я щелкаю элемент страницы, а не событие прокрутки?

  2. Почему это происходит только тогда, когда я выполняю эти действия с помощью своей автоматизации, а не при обычном взаимодействии со страницей?

  3. Это нужно исправить в приложении или в автоматизации?

...