Squeak.ru - шаблоны программирования

Selenium WebDriver С# странное поведение

Я использую Selenium Web Driver и столкнулся со следующим исключением при попытке щелкнуть нужный элемент в веб-браузере: Unable to locate element. XPath верны на 100%. Странно то, что он работает нормально, когда:

  • В режиме отладки.

  • После нажатия Continue в VS при появлении исключения.

  • Когда я перемещаю мышь вручную по экрану.

Буду признателен за любую помощь.

РЕДАКТИРОВАТЬ: Thread.Sleep не помогает. Я пытаюсь нажать кнопку уменьшения года в веб-календаре. Первый раз работает, второй раз зависает. Но объект все еще там. Так что я не понимаю, как это может быть не видно.


  • Как долго вы позволяете потоку спать? По моему опыту, я не давал потоку спать достаточно долго, прежде чем страница отобразилась, даже когда я думал, что да. 23.12.2015
  • 1,5 секунды. Самое странное, что он щелкает с первого раза и все в порядке. Затем мне нужно щелкнуть тот же объект еще раз, и возникает проблема. Когда я двигаю мышь, она работает :D 26.12.2015

Ответы:


1

Драйвер пытается найти элемент до его загрузки. Попробуйте дождаться его, прежде чем нажимать.

wait.Until(ExpectedConditions.ElementIsVisible(By.XPath(path))).Click();
23.12.2015
  • Могу ли я добавить автоматическое движение мыши, если помогает ручное движение? 23.12.2015
  • Что-то вроде Actions.MoveToElement()? 23.12.2015
  • я имею в виду, чтобы увидеть движущуюся мышь с помощью веб-драйвера. Является ли это возможным? 26.12.2015

  • 2

    Вот несколько вещей, которые вы можете попробовать:

    1-попробуйте селектор по ID вместо xpath. Возможно, новые элементы визуализируются, и xpath не нашел элемент.

    2-реализовать шаблон повтора

    3-используйте спящий режим потока, чтобы страница полностью отрисовывалась.

    23.12.2015
    Новые материалы

    Очистить файлы Program .cache в Ubuntu 20.10
    Очистите кеш за несколько простых шагов! GNU / Linux реализовал эффективное управление хранилищем для своих пользователей. Но заметили ли вы, что в вашей системе Linux заканчивается место,..

    Использование Node.js для чтения действительно больших файлов (часть 1)
    В этом сообщении в блоге есть интересный источник вдохновения. На прошлой неделе кто-то на одном из моих каналов в Slack опубликовал тестовое задание, которое он получил на должность..

    Введение в градиентный спуск и обратное распространение
    Введение в градиентный спуск и обратное распространение Как машинное обучение? Машинное обучение ( ML ) - это исследование компьютерных алгоритмов, которые автоматически улучшаются по..

    Шаблон CQRS — C#
    Этот архитектурный шаблон в основном говорит о том, что мы можем использовать одну модель для операций чтения, а другую — для операций записи. Звучит хорошо, но реализовать его может быть..

    Освоение функций потерь в машинном обучении для регрессии: полное руководство по оптимизации…
    Введение: Функция потерь является важным компонентом алгоритмов машинного обучения и статистических моделей. Его роль заключается в измерении несоответствия между прогнозируемым выходом модели и..

    10 языков программирования, которые изменят мир в 2023 году
    Мир программирования постоянно развивается, и востребованные языки постоянно меняются. Однако есть несколько языков, которые выдержали испытание временем и по-прежнему очень ценны для изучения в..

    Чем заняться в наших библиотеках (апрель 2023 г.)
    В апреле этого года мы празднуем обучение по-разному — от принятия позитивного и устойчивого мышления до понимания и сохранения местных популяций пчел, а также изучения новейших и новейших..