WedX - журнал о программировании и компьютерных науках

Найдите идентификатор элемента на веб-странице для использования с селеном

Я хочу автоматически щелкнуть элемент на веб-странице, используя следующий код на Python:

driver.find_element_by_id("book appointment").click()

Снимок веб-страницы выглядит следующим образом: введите здесь описание изображения

Моя проблема в том, что я не могу найти текст «Запись на прием» в источнике страницы, чтобы извлечь его идентификатор. Как узнать его ID?


  • Используйте инструменты разработчика Chrome или расширение firefox firebug для проверки элемента. В Chrome просто щелкните элемент правой кнопкой мыши и выберите inspect. Он приведет вас к элементу в доме. Затем вы можете увидеть, имеет ли этот элемент ID, или вам придется идентифицировать его с каким-либо другим атрибутом. Если этого достаточно, чтобы ответить на ваш вопрос, дайте мне знать, и я опубликую его как ответ. 05.04.2017
  • нам нужно увидеть исходный код страницы 05.04.2017
  • Можете ли вы добавить html-код той кнопки, которую вы хотите найти 05.04.2017
  • @mrfreester Спасибо. Вот что я получаю при проверке этого элемента: <a href="../appointment/appointmentlocation?headerid=6119da0b-3e13-e711-a0fb-005056921984&amp;formId=6219da0b-3e13-e711-a0fb-005056921984" class="btn btn-inverse btn-spacer"><i class="icon icon-calendar icon-white"></i>&nbsp;&nbsp;Book Appointment</a> Какой атрибут я могу использовать для идентификации этого элемента? 05.04.2017
  • И если этот элемент можно получить с помощью inspect, то почему его нет в исходниках страницы? 05.04.2017
  • Эта кнопка не имеет атрибута id, судя по предоставленному вами коду. Вам придется перебрать класс "btn btn-inverse btn-spacer" и проверить известный внутренний текст "&nbsp;&nbsp;Book Appointment", прежде чем возвращать объект кнопки, на который вы можете нажать, или использовать спецификацию XPATH. 05.04.2017

Ответы:


1

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

driver.find_element_by_xpath("//a[contains(.,'Book Appointment')]")
05.04.2017
  • Спасибо. Но этот фрагмент кода вызывает следующую ошибку: selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: //a[contains(.,'Book Appointment')] 05.04.2017
  • Я узнал, в чем была проблема. Я должен дождаться полной загрузки страницы. 05.04.2017

  • 2

    find_element_by_id требуется идентификатор в качестве входных данных. Вы даете текстовый контент в качестве входных данных.

    Вы можете попробовать другой селектор. может быть find_element_by_link_text.

    Существуют различные стратегии поиска элементов на странице.

    Методы поиска элементов на странице:

    • find_element_by_id
    • find_element_by_name
    • find_element_by_xpath
    • find_element_by_link_text
    • find_element_by_partial_link_text
    • find_element_by_tag_name
    • find_element_by_class_name
    • find_element_by_css_selector

    Чтобы найти несколько элементов

    • find_elements_by_name
    • find_elements_by_xpath
    • find_elements_by_link_text
    • find_elements_by_partial_link_text
    • find_elements_by_tag_name
    • find_elements_by_class_name
    • find_elements_by_css_selector

    для справки по каждому селектору вы можете обратиться по ссылке.

    05.04.2017
  • Да, я дал 'книжное назначение так же, как в индикаторе. Я пробовал find_element_by_link_text, но это тоже не сработало. 05.04.2017
  • @Hossein текст ссылки не "book appointment", а "&nbsp;&nbsp;Book Appointment". 05.04.2017
  • @ Хоссейн Хоссейн, ты пробовал с xpath? он должен работать. сначала попробуйте с фиксированным xpath, а затем попробуйте сделать свой xpath универсальным. Опять же, это зависит от веб-страницы. 05.04.2017
  • Я попробовал xpath в соответствии с ответом @NarendraRajput, но, как я там прокомментировал, это не сработало. И я не знаю, в чем причина. 05.04.2017
  • Новые материалы

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

    ИИ в аэрокосмической отрасли
    Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


    Для любых предложений по сайту: [email protected]