нажатие на кнопку без идентификатора в Selenium python

#python #python-3.x #selenium #selenium-webdriver #selenium-chromedriver

#python #python-3.x #селен #selenium-webdriver #selenium-chromedriver

Вопрос:

Здравствуйте, я пытаюсь нажать на кнопку в python selenium, у которой нет идентификатора. Внутри кнопки есть текст Submit an application . Однако на веб-сайте есть несколько фраз «Отправить заявку». Атрибутами веб-сайта являются:

<a class= "button" href = "(a link)" analytics-on="click" analytics-category="Body" analytics-event="(a link)" analytics-label="Submit an application||(a link)">

Ответ №1:

Согласно документации, существует несколько методов, которые вы можете использовать для поиска элемента. В этой ситуации я бы лично использовал Xpath, если он доступен. Откройте инструмент разработчика Chrome на вкладке HTML и найдите элемент, который вы хотите найти (или щелкните правой кнопкой мыши по элементу и перейдите к проверке элемента). Щелкните правой кнопкой мыши по тегу HTML (в инструменте разработки) и выберите копировать> xpath. Теперь в вашем коде python вы можете найти свой элемент следующим образом:

button = driver.find_element_by_xpath("past_the_xpath_here")

В качестве альтернативы, поскольку вы пытаетесь найти ссылку, вы также можете найти элемент, используя текст ссылки: button = driver.find_element_by_link_text("Submit an application")

Комментарии:

1. Я забыл упомянуть, что на веб-сайте было несколько текстов «Отправить заявку». Поэтому я не могу это использовать. Я обновил детали doe. Спасибо, что указали на это.

2. Как насчет селектора XPath?

3. Я получил Xpath следующим образом: //*[@id=»pagebody»]/p[58]/a как бы мне реализовать это в драйвере.find_element_by_xpath(), когда я пытаюсь его реализовать, он выдает ошибку

4. Это не xpath, соответствующий элементу, который вы ищете. Вы уверены, что выбрали правильный элемент в исходном коде html? В качестве альтернативы вы можете попробовать driver.find_element_by_xpath('//a[contains(@href,"my_link")]') were my_link — это ссылка в href атрибуте элемента, который вы пытаетесь найти.

5. Когда я захожу на этот сайт [ ontario.ca/page / … , есть кнопка Отправки заявки , и я пытаюсь нажать на нее вручную. У меня есть код driver.find_element_by_xpath('//a[contains(@href,"https://www.ontarioimmigration.gov.on.ca/oinp_index/resources/app/guest/index.html#!/")]') , однако selenium все еще не может найти элемент на веб-сайте. Если бы вы могли взглянуть на это, это было бы здорово и извините за все проблемы, которые я причинил.

Ответ №2:

вы можете попробовать с помощью css_selector. driver.find_element_by_css_selector(‘[analytics-on =»click»]’).click() driver.find_element_by_css_selector(‘[analytics-category =»Body»]’).click()

или метод link_text также является хорошим выбором для поиска тега a, driver.find_element_by_link_text(«Отправить заявку»).click()

Комментарии:

1. селектор css, который я нашел, был .button: nth-child(1) . Ошибка просто сказала, что ее не удалось найти.