2016-04-07 7 views
0

txtファイルfollow.txtを使用してURLを参照していて、website.Butで特定のボタンをクリックしてURLを参照していますが、問題が発生して要素を見つけられず、SeleniumでPythonエラー処理して再度処理する

私はそのエラーが来たら、それはtxtファイルの2行目を読み、エラーを無視する必要があります。私はまたproblem.Butを克服するコードを試したが、まだ正常に動作していない。私のコードはいくつかの問題があると思うどのように私はこの問題を解決することができますか?私はエラー処理のために私のコードを使用しています。

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

「2行目でもエラーが発生した場合はどうなりますか?怖いだろう。あなたは間違いなくファイル内の行数としてブロックを除いて多くのネストされたtryを書きたくない。

したがって、ファイルを再度開く必要なしに開いたファイルオブジェクトを使用できるように、エラーが予想される文を除いて試してみる必要があります。次のような何か:

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」をロジックに深く入れても、ファイルを開くときなどに「try except」以外を使用すべきではありません。より良い方法は、 'with'を使用することです。この場合、ファイルを開いている間にファイルを閉じたり例外を処理したりする心配がありません。

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

多くのありがとう@LearnerEarnerあなたのコードは私の問題を解決しました。 –

+0

@JoshMillerあなたの質問に満足できる回答があった場合は、回答を受け入れてください(上/下の投票ボタンの下にあるチェックボックス)。 – jpmc26

+0

@JoshMiller解決策があなたを助けてくれてうれしい – LearnerEarner

関連する問題