2016-04-07 2 views
0

Я просматриваю URL-адрес, используя txt-файл follow.txt, и нажимаю на определенную кнопку на веб-сайте. Но проблема в том, что когда-то я получаю ошибку неспособности найти элемент и не могу нажать кнопку.Ошибка обработки Python с селеном и продолжение процесса

Я хочу, чтобы в случае возникновения этой ошибки он должен был прочитать вторую строку txt-файла и проигнорировать ошибку. Я также попробовал код для решения проблемы. Но он по-прежнему не работает должным образом. Я думаю, что у моего кода есть некоторая проблема . Как я могу решить эту проблему. Вот мой код, который я использовал для обработки ошибок.

try: 
f = open('follow.txt', 'r', encoding='UTF-8', errors='ignore') 
line = f.readline() 
while line: 
    line = f.readline() 
    browser.get(line) 
    browser.find_element_by_xpath(""".//*[@id='react-root']/section/main/article/header/div[2]/div[1]/span/button""").click() 
    time.sleep(50) 
    f.close(); 
except Exception as e: 
    f = open('follow.txt', 'r', encoding='UTF-8', errors='ignore') 
    line = f.readline() 
    while line: 
     line = f.readline() 
     browser.get(line) 
     browser.find_element_by_xpath(""".//*[@id='react-root']/section/main/article/header/div[2]/div[1]/span/button""").click() 
     time.sleep(20) 
     browser.find_element_by_tag_name("body").send_keys(Keys.ALT + Keys.NUMPAD2) 
     browser.switch_to_window(main_window) 
     time.sleep(10) 
     f.close(); 

ответ

1

В том виде, как вы написали ответ на такой вопрос, как ... «Что происходит, когда есть ошибка даже во второй строке?» было бы страшно. Вы определенно НЕ хотите писать столько вложенных попыток, кроме блоков, как количество строк в файле.

Таким образом, вам понадобится попробовать, кроме инструкции, в которой вы ожидаете ошибку, которая позволит вам использовать открытый объект файла без необходимости повторного открытия файла. Что-то похожее на следующее:

f = open('follow.txt', 'r', encoding='UTF-8', errors='ignore') 
line = f.readline() 
while line: 
    line = f.readline() 
    browser.get(line) 

    try: 
     browser.find_element_by_xpath(""".//*[@id='react-root']/section/main/article/header/div[2]/div[1]/span/button""").click() 
    except Exception as e: 
     print e # Or better log the error 

    time.sleep(50) 

browser.find_element_by_tag_name("body").send_keys(Keys.ALT + Keys.NUMPAD2) 
browser.switch_to_window(main_window) 
time.sleep(10) 
f.close(); 

Это должно позволить вам продолжить со следующей строки, даже если есть ошибка в момент «.click()». Обратите внимание, что вы не хотите закрывать файл, когда вы не закончили чтение всего, что вы хотите из файла.

Мое намерение переместить «попробуйте кроме» глубоко в логику, не означает, что вы не должны использовать «try except» else, где, например, при открытии файла. Чем лучше использовать «с», в этом случае вам даже не нужно беспокоиться о закрытии файла и обработке исключений при открытии файла.

with open('follow.txt', 'r', encoding='UTF-8', errors='ignore') as f: 
    .... 
+0

Большое спасибо @LearnerEarner, ваш код решил мою проблему. –

+0

@JoshMiller Если кто-то дает вам удовлетворительный ответ на ваш вопрос, пожалуйста, примите ответ (флажок ниже кнопок вверх/вниз). – jpmc26

+0

@JoshMiller Я рад, что это помогло вам – LearnerEarner

Смежные вопросы