Выделенный элемент не отображается - Mac - Safari 11.1 - Selenium - C # - PullRequest
0 голосов
/ 03 октября 2018

Я тестирую регистрацию на нашем сайте, и одним из полей является раскрывающееся меню выбора.Тест полностью работает во всех браузерах Windows Desktop.Это также работает в Chrome на Mac.Эта проблема возникает только в Mac Safari 11.1:

При попытке выбрать желаемую опцию он сообщает, что элемент select не виден.

Мои тесты выполняются в Visual Studio через Browserstack.У меня есть скриншоты и видео, которые ясно показывают, что выбранный элемент виден (по крайней мере, для пользователя).Это не в нижней части страницы, там нет нижнего колонтитула, охватывающего какую-либо его часть.Я прокручиваю до каждого элемента, чтобы взаимодействовать с ним.

Мое устранение неполадок:

  1. Чтобы увидеть, была ли проблема с доступностью из элемента select и ниже, я закомментировал кодкоторый взаимодействует с элементом select и успешно взаимодействует с элементом под ним (текстовое поле ввода).

  2. Я добавил 30-секундное ожидание, прежде чем пытаться выбрать параметр в случае, если есть какой-либо видзадержки в драйвере / DOM, «видя» элемент select - та же ошибка.

  3. Я дважды проверил мой XPath - на нашем локальном Mac XPath возвращает только 1 результат, и это выборрассматриваемый элемент (он выделяется при поиске кода по XPath).

  4. Я использую метод Selenium.Support.UI для выбора параметра по его тексту.'option' содержит текст для выбора:

    SelectElement select = new SelectElement (element);select.SelectByText (option);

... поэтому я попытался выбрать с помощью JavaScript, изменив индекс:

// Selects the option but no option change occurs from the user's perspective, nor are any events triggered based on the change
js.ExecuteScript("arguments[0].selectedIndex = \"" + optionIndex + "\";", element);
// Trigger the change event
js.ExecuteScript("var event = new Event('change', { bubbles: true }); arguments[0].dispatchEvent(event);", element);

... это не сработалолибо вместо того, чтобы получить «элемент не виден», ничего не изменилось, и тестовый скрипт перешел к следующему текстовому вводу.

Я проверил, что этот метод будет работать, проверив его вручную в Windows на консоли Chrome, а также на Macв Safari 11.1 (изменил идентификатор элемента select на someID):

var element = document.getElementById("someID");
element.selectedIndex = "3";
var event = new Event('change', { bubbles: true });
element.dispatchEvent(event);

... работает нормально.

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

Я упускаю здесь очевидное?Есть ли известная проблема с этим?Я думаю, что единственный другой способ проверить это - удалить Browserstack из уравнения и провести локальный тест на нашем Mac.Что, наверное, первое, что я должен был сделать ...

1 Ответ

0 голосов
/ 03 октября 2018

Спасибо.

Я был на правильном пути с обходным приемом JavaScript, но у моего элемента select нет идентификатора, поэтому мне пришлось сначала назначить его, только тогда JavaScript изменил бывариант ...

js.ExecuteScript("arguments[0].setAttribute(\"id\", \"automationID\");", element);

js.ExecuteScript("var element = document.getElementById(\"automationID\"); element.selectedIndex = \"" + optionIndex + "\"; var event = new Event('change', { bubbles: true }); element.dispatchEvent(event);");
...