В python можно создать бесконечный цикл для поиска элемента на странице?

Я пытаюсь создать цикл для поиска xpath на странице, пока он не будет доступен.

Я пытаюсь с этим:

cart = driver.find_element_by_xpath('//*[@id = "add-to-cart-button"]')
if not cart:
    webdriver.ActionChains(driver).send_keys(Keys.F5).perform()
else:    
    driver.find_element_by_xpath('//*[@id = "add-to-cart-button"]').click()

Но невозможно определить корзину, потому что xpath еще недоступен.

Как ты это делаешь?

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
2
0
162
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Оберните click() внутри блока try/catch{} следующим образом:

while True:
    try:
        WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//*[@id='add-to-cart-button']"))).click()
        break
    except TimeoutException:
        driver.ActionChains(driver).send_keys(Keys.F5).perform()
        

Примечание. Вы должны добавить следующие импорты:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.action_chains import ActionChains

@Angel91 Незначительная ошибка при копировании/вставке xpath. Исправлено сейчас. Сообщите мне статус.

undetected Selenium 20.12.2020 16:50

@Angel91 Angel91 Это ваша логика/реализация, и я не вижу вашего требования использовать send_keys(Keys.F5) для обновления страницы.

undetected Selenium 20.12.2020 17:02

я использую driver.get("url"), вставил F5 для обновления страницы, но у меня есть еще одна проблема: когда я использую URL-адрес, страница не отображается, только если я щелкаю другой элемент страницы.

Angel91 20.12.2020 17:20

@ Angel91 Кажется, это совсем другая проблема. Можете ли вы задать новый вопрос в соответствии с вашим новым требованием? Участники Stackoverflow будут рады вам помочь.

undetected Selenium 20.12.2020 17:23

вместо xpath я могу использовать другую команду? название кнопки «Добавить в машину». Я могу использовать?: WebDriverWait(водитель, 20).until(EC.element_to_be_clickable((By.LINK_TEXT, "Добавить в машину"]"))).click()

Angel91 20.12.2020 18:24

@Angel91 Angel91 Зависит от разметки. Нам нужно увидеть HTML для оптимизированной стратегии локатора

undetected Selenium 20.12.2020 18:50

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