Selenium RC: как захватить / обработать ошибку?

Мой тест использует Selenium для циклического прохождения списка URL-адресов CSV через HTTP-прокси (рабочий скрипт ниже). Наблюдая за выполнением сценария, я вижу, что около 10% вызовов выдают «Ошибка прокси: 502» («Bad_Gateway»); тем не менее, ошибки не фиксируются моим предложением «все, кроме исключения», то есть: вместо записи «error» в соответствующую строку «output.csv» они передаются в предложение else и выдают короткий HTML-код, который запускается: «Ошибка прокси: 502 Ошибка чтения с сервера: неизвестная ошибка». Кроме того, если я соберу все URL-адреса, которые вернули 502, и перезапущу скрипт, они все пройдут, что заставит меня поверить, что это спорадическая проблема сетевого пути.

Вопрос: Можно ли создать сценарий для распознавания ошибок 502, поспать минуту, а затем повторить URL-адрес вместо перехода к следующему URL-адресу в списке?

Единственная альтернатива, о которой я могу подумать, - это применить re.search («Ошибка прокси: 502») после «get_html_source» как способ отловить неправильные вызовы. Затем, если RE совпадает, переведите скрипт в спящий режим на минуту и ​​повторите попытку sel.open (row [0]) на URL-адресе, который выдал 502. Любой совет будет высоко оценен. Спасибо!

#python 2.6
from selenium import selenium
import unittest, time, re, csv, logging

class Untitled(unittest.TestCase):
    def setUp(self):
        self.verificationErrors = []
        self.selenium = selenium("localhost", 4444, "*firefox", "http://baseDomain.com")
        self.selenium.start()
        self.selenium.set_timeout("60000")

    def test_untitled(self):
        sel = self.selenium
        spamReader = csv.reader(open('ListOfSubDomains.csv', 'rb'))
        for row in spamReader:
            try:
                sel.open(row[0])
            except Exception:
                ofile = open('output.csv', 'ab')
                ofile.write("error" + '\n')
                ofile.close()
            else:
                time.sleep(5)
                html = sel.get_html_source()
                ofile = open('output.csv', 'ab')
                ofile.write(html.encode('utf-8') + '\n')
            ofile.close()

    def tearDown(self):
        self.selenium.stop()
        self.assertEqual([], self.verificationErrors)

if __name__ == "__main__":
     unittest.main()
5.11.2009 03:40:39
1 ОТВЕТ
РЕШЕНИЕ

Я думаю, что альтернатива, которую вы предлагаете, в порядке. вместо get_html_source вы можете использовать функцию captureNetworkTraffic для получения заголовка HTTP. Это было бы безопаснее, потому что страница 502 может измениться.

Будьте осторожны, есть ошибка в captureNetworkTraffic оболочки python с селеном, которая может быть взломана. Смотрите: http://jira.openqa.org/browse/SRC-758

1
5.11.2009 09:57:58