Ошибка driver.find_element или find_elements

Я пытаюсь нажать «Создать новую сеть», используя селен.

<button type = "button" id = "dt-refreshBtn" class = "btn wc-btn--link" data-label = "Create New Network" role = "link"><span class = "icon-button" data-testid = "dnxButton-iconButtonContainer" data-awt = "networkListing-button-createNew"><i class = "dnac-icon-add-circle" data-testid = "dnxButton-icon" title = "Create New Network"></i><span class = "dnx-btn-icon-label" data-testid = "dnxButton-iconLabel">Create New Network</span></span></button>
<span class = "icon-button" data-testid = "dnxButton-iconButtonContainer" data-awt = "networkListing-button-createNew"><i class = "dnac-icon-add-circle" data-testid = "dnxButton-icon" title = "Create New Network"></i><span class = "dnx-btn-icon-label" data-testid = "dnxButton-iconLabel">Create New Network</span></span>
<i class = "dnac-icon-add-circle" data-testid = "dnxButton-icon" title = "Create New Network"></i>
<span class = "dnx-btn-icon-label" data-testid = "dnxButton-iconLabel">Create New Network</span>

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

  1. Сообщение: нет такого элемента: невозможно найти элемент:
  2. AttributeError: объект «список» не имеет атрибута «send_keys»
  3. Объект «список» не имеет атрибута «клик»

вот сценарии, которые я пробовал.

driver.find_element(By.CSS_SELECTOR, "[title='Create New Network']").click()
driver.find_element(By.CSS_SELECTOR, "[data-awt='networkListing-button-createNew']").click()
driver.find_element(By.CSS_SELECTOR, "[id='dt-refreshBtn']").click()
driver.find_element(By.CSS_SELECTOR, "[class='dnx-btn-icon-label']").click()
driver.find_elements(By.XPATH, "//*[@class='dnx-btn-icon-label']").send_keys(Keys.ENTER)
driver.find_elements(By.XPATH, "//button[@class='btn wc-btn--link']")[0].send_keys(Keys.ENTER)
driver.find_elements(By.XPATH, "//*[@id='dt-refreshBtn']").send_keys(Keys.ENTER)
driver.find_element(By.ID, "dt-refreshBtn").send_keys(Keys.ENTER)
driver.find_element(By.CSS_SELECTOR, "[data-testid='dnxButton-icon']").send_keys(Keys.ENTER)
driver.find_element(By.CSS_SELECTOR, "[data-testid='dnxButton-iconLabel']").send_keys(Keys.ENTER)
driver.find_elements(By.CSS_SELECTOR, "[data-awt='networkListing-button-createNew']").click()
driver.find_element(By.CSS_SELECTOR, "[title='Create New Network']").click()
driver.find_elements(By.XPATH, "//*[@id='dt-refreshBtn']").click()

не могли бы вы помочь этому?

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
158
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Теперь давайте рассмотрим каждую ошибку. .find_elements() используется для нескольких элементов, а .click() | send_keys() используется для одного элемента, поэтому большинство дадут объект «список», не имеющий атрибута «щелчок», если вы не получите доступ к отдельному элементу.

.send_keys() обычно используется для входных тегов или текстовых полей, и вам понадобится .click() для тега кнопки.

Теперь некоторые допустимые xpaths будут такими:

driver.find_element(By.XPATH, "//button[@class='btn wc-btn--link']").click()

будет допустимым xpath, если это единственный класс кнопок с таким именем класса.

driver.find_element(By.XPATH, "//button[@id='dt-refreshBtn']").click() 

Если это все еще не находит, проверьте, находится ли элемент под фреймами или теневыми корнями.

Спасибо за комментарии. но теперь я получил эту ошибку с driver.find_element(By.XPATH, "//button[@class='btn wc-btn--link']").click() Traceback (последний последний вызов): File "/ Users/onboarding/venv/lib/python3.11/site-packages/seleniu‌​m/webdriver/remote/w‌​ebdriver.py", строка 445, в find_element return self.execute(Command.FIND_ELEMENT, {"using": by, "value": value})["value"] selenium.common.exceptions.NoSuchElementException: Сообщение: нет такого элемента: Не удалось найти элемент: {"method":"xpath","selector":"//button [@class='btn wc-btn--link']"}

Daniel 12.11.2022 19:19
driver.find_element(By.XPATH, "//button[@id='dt-refreshBtn']").click() 

должно сработать

Спасибо за комментарии. но теперь я получил эту ошибку с driver.find_element(By.XPATH, "//button[@id='dt-refreshBtn']").click() Traceback (последний последний вызов): File "/Users/onboarding/ venv/lib/python3.11/site-packages/seleniu‌​m/webdriver/remote/w‌​ebdriver.py", строка 861, в find_element return self.execute(Command.FIND_ELEMENT, {"using": by, "value ": значение})["значение"] selenium.common.exceptions.NoSuchElementException: Сообщение: нет такого элемента: Не удалось найти элемент: {"метод":"xpath","селектор":"//кнопка[@id= 'dt-refreshBtn']"‌​}

Daniel 12.11.2022 19:20
Ответ принят как подходящий

наконец, я нашел причину и получил решение в этом коде.

driver.find_element(By.XPATH, "//button[@id='dt-refreshBtn' and @class='btn wc-btn--link']")

с этой комбинацией это сработало. Спасибо всем.

Другие вопросы по теме