0

I am browsing URL using txt file follow.txt and doing click on specific button in website.But the problem is that sometime I am getting error of unable to locate element and unable to click button.

I want that if that error come, it should read second line of txt file and ignore the error.I also tried the code to overcome the problem.But it is still not working properly.I think my code have some problem.How i can solve this problem.Here is my code that i used for error handling.

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 Answer 1

1

In the way you have written the answer to a question like... "What happens when there is an error even in the second line?" would be scary. You definitely do NOT want to write as many nested try except blocks as the number of lines in the file.

So, you will need to have the try except on the statement where you would expect an error, which will allow you to use the opened file object without the necessity to reopen the file. Something similar to the following:

 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();

This should let you to continue with the next line even though there is an error at the time of ".click()". Note that you do not want to close the file when you are not done with reading all that you want from file.

My intention of moving "try except" deep into the logic doesn't mean that you shouldn't use "try except" else where for example while opening file. The more better way is to use 'with' in which case you don't even need to worry about closing the file and handling exceptions while opening the file.

with open('follow.txt', 'r', encoding='UTF-8', errors='ignore') as f:
    ....
Sign up to request clarification or add additional context in comments.

3 Comments

Thanks a lot @LearnerEarner your code solved my problem.
@JoshMiller If someone gives you a satisfactory answer to your question, please accept the answer (check box below the up/down vote buttons).
@JoshMiller I'm glad the solution helped you

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.