#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")]')
weremy_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) . Ошибка просто сказала, что ее не удалось найти.