Я использую селен, чтобы создать покупателя на сайте, чтобы проверить свои навыки в Python. Мне удалось заставить большую часть этого работать, за исключением некоторых несоответствий во времени загрузки страницы, которые я не могу исправить, но я думаю, что я знаю, почему это происходит.
Когда я загружаю страницу товара в магазине, я использую следующий код:
try:
cartbttn = driver.find_element_by_name('commit')
if cartbttn.is_displayed():
driver.execute_script("document.getElementsByName('commit')[0].click()")
print("Added to cart")
except(StaleElementReferenceException):
return(115)
Код обычно работает нормально, и скрипт завершает свою работу в среднем за 2,5 секунды.
Проблема в том, что иногда нажатие кнопки «Добавить корзину» или «Оформить заказ» приводит к задержке страницы и заставляет страницу «останавливаться» на несколько секунд, как будто она обрабатывается, а затем действие завершается. Я знаю, что это не задержка с их стороны, так как сайт не занят, и когда я делаю это вручную, нажимая кнопки, проблема никогда не возникает.
Я полагаю, что должно произойти то, что javascript нажатия кнопки выполняется, когда кнопка полностью «видима» и щелкает, но иногда нажатие кнопки вызывается перед этим и вызывает сбои в работе сайта и требует этого времени наверстывания.
Я пытался дождаться, пока элемент будет виден, и использовать функцию element.click (), которая не дает эффекта. Я думал, что использование JavaScript для вызова нажатия кнопки будет работать, но это тоже не сработало.
Я также добавил ручные сны, которые помогли. Единственная проблема со сном заключается в том, что они должны быть достаточно большими для наихудших сценариев, что означает, что вы теряете преимущество в скорости, если сайт работает быстрее.
Ожидаемый результат - нажатие кнопки и ожидание появления кнопки «Оформить заказ», прежде чем пытаться нажать кнопку «Оформить заказ», чтобы не возникало проблем с сайтом.