Python / Selenium: Как обрабатывать утверждения / ошибки как True или False только для дальнейшего использования в программе? - PullRequest
0 голосов
/ 19 октября 2011

Я использую Python для Selenium RC и использую следующую команду selenium:

self.se.get_attribute("CSS")

Эта команда подтверждает, что соответствующий упомянутый CSS не найден на веб-странице.

Isя могу избежать утверждения, и вместо утверждения выполняется другая команда (при условии, что утверждение выполнено)

self.se.get_text("another CSS")

Есть ли в python способ захватить утверждениеи просто сохранить его значение и продолжить работу, не прерывая программу?Может ли кто-нибудь помочь мне с этим?Спасибо

Ответы [ 2 ]

0 голосов
/ 19 октября 2011

Если 'CSS' недопустимо, селен повышает TypeError, вы можете перехватить и обработать исключение в блоке try..except:

try:
    self.se.get_attribute("CSS")
except TypeError:
    self.se.get_text("another CSS")

Это пример Стиль кодирования "Проще просить прощения (EAFP), чем разрешения" .Альтернатива - стиль кодирования Look before your прыжок (LBYL) (см., Например, Никита Барсуков, ответ ).И то, и другое возможно, хотя я думаю, что EAFP предпочтительнее в Python, потому что не загромождает код условными выражениями, которые могут полностью или не полностью охватывать исключительные условия.EAFP также быстро, когда исключение не вызывается слишком часто .Если исключение часто возникает, LBYL может быть предпочтительным.

0 голосов
/ 19 октября 2011

Присвойте значение метода, проверяющее, присутствует ли селектор, логическому значению. Код Ruby будет похож на:

selector_present? = @driver.find_elements(:css, "div#id_name").length > 0
#some other code in your test script
overall_result = selector_present? && other_selector_present?
overall_result.should be_true

Синтаксис Python будет аналогичным.

...