Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Σε κάποια φάση θα ασχοληθώ και με το συμμάζεμα.

 

Το Linux only το έβαλα γιατί μόνο σε αυτό το περιβάλλον το test-αρα. Δεν έψαξα καν αν υπάρχει πχ. ο PhantomJS σε windows ή κάποιο άλλο OS.

  • Like 1
Δημοσ.

@gon1332

Το assert που κάνεις δεν έχει και πολύ νόημα... Εκτός αυτού, τα assertions θα έπρεπε να αποφεύγονται στον «κανονικό» κώδικα της εφαρμογής σου γιατί μπορούν να γίνουν disabled κατά το runtime. Επίσης, στην πλειοψηφία των περιπτώσεων, το AssertionError δεν είναι το σωστό exception (semantically speaking :P). Όταν θες να τσεκάρεις ότι ισχύει κάτι τότε κάντο explicitly και σήκωσε το κατάλληλο exception:

if "Insomnia" not in driver.title:
    raise ValueError("Where am I? <%s>" % LOGIN_URL)

Από εκεί και πέρα, στην συγκεκριμένη περίπτωση, τα try/except  μπορείς να τα αποφύγεις ως εξής:

import atexit

# create driver
driver = webdriver.PhantomJS()
atexit.register(driver.close)
# login
driver.get(LOGIN_URL)
driver.find_element_by_id("ips_username").send_keys(USER)       # when an id is available, always prefer that.
driver.find_element_by_id("ips_password").send_keys(PASS)
driver.find_element_by_class_name("input_submit").submit()
# get unread messages
driver.get(TARGET_URL)
unread_elems = driver.find_elements_by_class_name("unread")
print("\u2605", len(unread_elems))

Όπως βλέπεις ο κώδικας γίνεται πιο concise και ευανάγνωστος.

 

Tip: Όταν χρειάζεται να κάνεις handle πολλές φορές το ίδιο πράγμα, τότε καλό είναι να γράψεις έναν context manager. Δες εδώ για να πάρεις ιδέες: http://hoardedhomelyhints.dietbuddha.com/2012/12/52python-encapsulating-exceptions-with.html

  • Like 1
Δημοσ.

Ωραίος. Όντως είναι πιο ευανάγνωστος.

 

Έχεις δίκαιο για το assert. Το είχε στο tutorial κι απλά έπαιζα μαζί του. :D

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...