Невозможно вернуть значения, «StaleElementReferenceException» - PullRequest
1 голос
/ 22 апреля 2020

У меня есть ссылка, которую я хочу открыть в новой вкладке, удалить из нее некоторые данные и затем закрыть эту вкладку. Я вызываю функцию 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 () и вернул список обратно. Работает отлично. Я не знаю, почему вышеприведенный код не работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...