#javascript #python #selenium
Вопрос:
Предпосылка / Чего вы хотите достичь
Я планирую создать программу, которая выполняет бесконечный цикл, как показано ниже.
Выражено в буквах. Этот бесконечный цикл сначала определяет наличие или отсутствие «элемента А» на веб-странице. Следующие два пункта являются характеристиками элемента A. (1) Их может быть несколько одновременно. (2) Один клик возможен для одного элемента A. Как только вы нажмете на него, чтобы обновить браузер, он исчезнет.
Если есть элемент A, нажмите элемент A, а затем запустите оранжевую программу на рисунке, чтобы обновить свой браузер. После этого снова определяется наличие или отсутствие элемента А. Если элемента A нет, отобразите «Не найден элемент A» и обновите браузер. После этого снова определяется наличие или отсутствие элемента А. (*) На самом деле мы планируем создать программу, которая «если элемента А нет, обновит браузер без отображения» Не найден элемент А», а затем снова определит наличие или отсутствие элемента А». В этом вопросе я в настоящее время добавляю этот код, чтобы убедиться, что программа работает правильно.
Кроме того, «программа, которая работает, если элемент A может быть получен», написана в исходном коде с использованием «для», чтобы она могла обрабатывать случай, когда несколько элементов A существуют одновременно на рисунке ниже. Дополнительные сведения см. в столбце текущий исходный код. Два круга бесконечной петли
Текущее состояние
Я использую приведенный ниже код, но, вероятно, я следую пути, показанному ниже в коде, и я не получаю бесконечный цикл.
def Orange():
# What to do after getting and clicking element A
# When this code is executed, if element A can be obtained, the function Orange () is executed, and if element A cannot be obtained, Not Found Element A is displayed and the browser is updated.
driver.refresh()
time.sleep(1)
GetA = driver.find_elements_by_css_selector(".AAAAA")
for i in GetA:
GetA[0].click()
Orange()
driver.refresh()
else:
pass
time.sleep(4)
print("Not Found Element A")
driver.refresh()
What I tried
def LOOP():
while GetA == True:
for i in GetA:
GetA[0].click()
Orange()
driver.refresh()
driver.refresh()
time.sleep(1)
GetA = driver.find_elements_by_css_selector(".AAAAA")
while GetA == True:
for i in GetA:
GetA[0].click()
Orange()
driver.refresh()
else:
LOOP()
Когда я собрал приведенный выше код и выполнил его,
отобразилась «Ошибка рекурсии: превышена максимальная глубина рекурсии при вызове объекта Python».
Я также думал о создании бесконечного цикла, начиная с обновления браузера следующим образом, но он просто обновил браузер.
if driver.refresh():
time.sleep(1)
GetA = driver.find_elements_by_css_selector(".AAAAA")
for i in GetA:
GetA[0].click()
Orange()
driver.refresh()
else:
driver.refresh()
else:
driver.refresh()
Дополнительная информация (версия FW / инструмента и т.д.)
Комментарии:
1. Одна из проблем заключается в том, что вы используете
.refresh()
внутри цикла, который повторяет набор элементов..refresh()
перезагружает страницу, чтобы после вызова коллекция элементов была недопустимой.refresh()
.