У меня есть ссылка, которую я хочу открыть в новой вкладке, удалить из нее некоторые данные и затем закрыть эту вкладку. Я вызываю функцию print_code () из al oop, чтобы решить эту проблему. Из этой функции print_code () я хочу вернуть 2 значения, но всякий раз, когда я делаю это, я получаю StaleElementReferenceException в l oop. Когда я не возвращаю никаких значений, я могу напечатать оба значения в функции print_code () без каких-либо ошибок. Что мне делать?
def print_code(s):
temp_driver=driver. //did this because when using driver, I was again getting the same exception
temp_driver.execute_script("window.open('');")
temp_driver.switch_to.window(driver.window_handles[1])
temp_driver.get(s)
problem=temp_driver.find_elements_by_tag_name("td")
problem_number=problem[2].text.split(' ')[0]
print(problem_number) //I am able to do this
code=temp_driver.find_element_by_class_name("linenums")
temp_driver.close()
temp_driver.switch_to.window(driver.window_handles[0])
return [problem_number,code.text];
for i in range(0,4):
print(table_rows_array[i])
link=driver.find_element_by_link_text(source_array[i].text)
link2code=link.get_attribute("href")
print(link2code)
arr=print_code(link2code) //this throws exception
print(arr[0])
# print(file_name)
Редактировать: я пробовал другой способ. Я добавил оба, то есть problem_number и code.text к списку в print_code () и вернул список обратно. Работает отлично. Я не знаю, почему вышеприведенный код не работает.