Кнопка «Найти» с селеном на python

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

Вопрос:

Я пытаюсь извлечь данные из этой кнопки, но она вызывает следующую ошибку: selenium.common.исключения.Исключение ElementNotInteractableException: Сообщение: элемент не поддается взаимодействию.

Исходный код кнопки:

 <button class="Blockreact__Block-sc-1xf18x6-0 Buttonreact__StyledButton-sc-glfma3-0 bqHBns jFqMrE ActionButtonreact__StyledButton-sc-7jpoey-0" type="button"><div class="Blockreact__Block-sc-1xf18x6-0 Flexreact__Flex-sc-1twd32i-0 olSpy jYqxGr"><i value="add" size="24" class="Iconreact__Icon-sc-1gugx8q-0 irnoQt material-icons">add</i></div></button>
 

Мой код:

 browser.find_element_by_xpath("//button[@type='button']")
 

Страница: Добавить элемент на https://opensea.io/asset/create
введите описание изображения здесь

введите описание изображения здесь

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

1. Ваш браузер запущен в полноэкранном режиме ?

2. Нет, я не пытался работать в полноэкранном режиме. Должен ли я?

3. Да, попробуйте, это может решить вашу проблему

4. Даже если другие функции селена работают?

5. попробуйте использовать full xpath ; и сообщите мне результат

Ответ №1:

Так как расширение браузера не работает для вас.

Вы пробовали с цепями действий ?

 from selenium.webdriver.common.action_chains import ActionChains
ActionChains(driver).move_to_element(browser.find_element_by_xpath("//i[@value='add']/../..")).click().perform()
 

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

1. Спасибо за ответ, но он все равно вызвал selenium.common.исключения. Исключение NoSuchElementException:Сообщение: такого элемента нет: Не удается найти элемент: {«метод»:»xpath»,»селектор»:»//кнопка[@type=»кнопка» и текст()=»добавить»]»}

2. хорошо, раньше у нас была selenium.common.exceptions.ElementNotInteractableException: ошибка, похоже, мы ее преодолели, но теперь с NoSuchElementException:Message помощью for //button[@type='button' and text()='add'] мне нужно будет увидеть ваш HTML. Можете ли вы поделиться соответствующим HTML, я вижу, что вы поделились, но можете ли вы поделиться немного большим количеством внешнего HTML ?

3. хорошо , вы можете попробовать вместо этого использовать этот xpath //i[@value='add']/../.. , см. Также обновление выше.

4. Извините, что отвечаю так поздно, кстати, я получаю эту ошибку: selenium.common.исключения. Исключение MoveTargetOutOfBoundsException: Сообщение: (1312, 1177) находится за пределами ширины окна просмотра (1920) и высоты (1080)

5. Я почти забыл об этой проблеме, могу ли я получить URL-адрес ?

Ответ №2:

Нажмите на кнопку, а не на значок. xpath:

 .//body/div[1]/div[1]/main/div/div/section/div[2]/form/section[6]/div[1]/div/div[2]/button 
 

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

 wait.until(ExpectedConditions.visibilityOfElementLocated(by));
wait.until(ExpectedConditions.elementToBeClickable(by));
 

Затем нажмите