Я пытаюсь создать цикл для поиска 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 еще недоступен.
Как ты это делаешь?
Оберните 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 Angel91 Это ваша логика/реализация, и я не вижу вашего требования использовать send_keys(Keys.F5)
для обновления страницы.
я использую driver.get("url"), вставил F5 для обновления страницы, но у меня есть еще одна проблема: когда я использую URL-адрес, страница не отображается, только если я щелкаю другой элемент страницы.
@ Angel91 Кажется, это совсем другая проблема. Можете ли вы задать новый вопрос в соответствии с вашим новым требованием? Участники Stackoverflow будут рады вам помочь.
вместо xpath я могу использовать другую команду? название кнопки «Добавить в машину». Я могу использовать?: WebDriverWait(водитель, 20).until(EC.element_to_be_clickable((By.LINK_TEXT, "Добавить в машину"]"))).click()
@Angel91 Angel91 Зависит от разметки. Нам нужно увидеть HTML для оптимизированной стратегии локатора
@Angel91 Незначительная ошибка при копировании/вставке xpath. Исправлено сейчас. Сообщите мне статус.