Я использую Selenium WebDriver, но мой фактический вопрос больше связан с итерацией в Python. У меня открыто 5 окон, и я пишу некоторые данные с некоторых сайтов, которые я очистил до нескольких файлов JSON, которые были созданы. Мой код выглядит следующим образом:
for i in range(len(driver.window_handles)):
try:
if value != "name" and variable.is_displayed():
with open("game%s.json" % (i + 1), "w") as outfile:
json.dump({"some variable": "data", "2nd variable":"2nd data", "nth variable": "nthdata[2][i]"}, outfile)
except NoSuchElementException:
print("text")
Это отлично работает, когда нет других индексов, и я много раз итерации, но когда речь заходит о чем-то вроде n-й переменной, где мне нужен элемент из переменной, которую я использую в [2], например и хочу, чтобы это повторялось для каждого окна, которое у меня есть и записано в соответствующий файл JSON, я получаю сообщение об ошибке
IndexError: string index out of range
Надеюсь, я ясно дал понять, чего я пытаюсь достичь, я искал вокруг, но не могу найти то, что ищу. Как я могу изменить это так, чтобы итерация работала, правильное количество раз для точного индекса, который я пытаюсь использовать?
Если в вашем массиве 5 объектов len return 5, но последний индекс массива - 4. добавьте -1 после того, как метод len будет иметь диапазон 0 и 4 = 5 объектов
for i in range(len(driver.window_handles)-1):
try:
if value != "name" and variable.is_displayed():
with open("game%s.json" % (i + 1), "w") as outfile:
json.dump({"some variable": "data", "2nd variable":"2nd data", "nth variable": "nthdata[2][i]"}, outfile)
except NoSuchElementException:
print("text")