Как устранить ошибку индекса списка вне диапазона при обработке новых функций и переключении вкладок с помощью Selenium в Python? - PullRequest
0 голосов
/ 12 апреля 2020

Это фрагмент кода для модуля get_instance.py

def open_new_tab(self, command):
    indx = len(self.browser.window_handles)
    try:
        self.browser.find_element_by_tag_name('body').send_keys(Keys.CONTROL+ 't')
    except:
        self.browser.execute_script('''window.open("about:blank", "_blank");''')
        curWindowHndl = self.browser.current_window_handle
        self.browser.switch_to_window(self.browser.window_handles[indx])

def close_tab(self, command):
    curWindowHndl = self.browser.current_window_handle
    print(curWindowHndl)
    self.browser.close()
    #after closing the current tab, switch to bext tab if available
    #otherwise the previous tab
    if len(self.browser.window_handles) >=1:
        #switch to the next greatest index
        indx = len(self.browser.window_handles) - 1 
    self.browser.switch_to_window(self.browser.window_handles[indx])

def switch_tab(self, command):
    #next/previous or n'th tab
    object = tcp.get_the_objective(command) #nothing to do with the TCP protocol though :P
    curWindowHndl = self.browser.current_window_handle
    current_indx = self.browser.window_handles.index(curWindowHndl)
    response = tcp.process_objective(object)
    if type(response) is str:
        if response == "+1":
            try:
                self.browser.switch_to_window(self.browser.window_handles[current_indx + 1])
            except:
                pass
        else:
            try:
                self.browser.switch_to_window(self.browser.window_handles[current_indx - 1])
            except:
                pass
    elif type(response) is int:
        if response < len(self.browser.window_handles):
            self.browser.switch_to_window(self.browser.window_handles[response])
        else:                
            self.browser.switch_to_window(self.browser.window_handles[len(self.browser.window_handles) - 1])

во время работы основной программы. Появляется следующая ошибка:

File "C:\Users\11anu\Desktop\Browser-Assistant-master\get_instance.py", line 270, in open_new_tab
    self.browser.switch_to_window(self.browser.window_handles[indx])
IndexError: list index out of range

Пожалуйста, помогите мне с этим, чтобы устранить эту ошибку.

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