Я делаю следующее в selenium 2/webdrive, используя python и firefox...
Я открываю некоторые веб-страницы, которые мне нужно проверить на наличие определенной строки, которая, если она присутствует, означает, что это хорошая страница для анализа.
Фраза, которую я ищу, представляет собой элемент h2, подобный этому:
<h2 class="page_title">Worlds Of Fantasy : Medieval House</h2>
Если этот h2 отсутствует, я знаю, что мне не нужно над ним работать, просто вернитесь и получите следующий в очереди.
В коде у меня есть блок try/exception/else, который ищет фразу, и если он ее видит, то переходит к следующей части функции. Если нет, он должен перейти к else, который говорит ему вернуться.
В этом тесте вызываются 2 страницы - на первой есть фраза, на второй нет.
Первая страница открывается и проходит проверку.
Открывается вторая страница, и я получаю отчет об исключении, но он никогда не возвращается к вызывающему коду в основном... он просто останавливается.
Почему исключение не указывает правильный путь для возврата?
Вот код:
#!/usr/bin/env python
from selenium import webdriver
from selenium.webdriver import Firefox as Browser
from selenium.webdriver.support.ui import WebDriverWait
browser = webdriver.Firefox()
def call_productpage(productlink):
global browser
print 'in call_productpage(' + productlink + ')'
browser.get(productlink)
browser.implicitly_wait(8)
#start block with <div class="page_content">
product_block = browser.find_element_by_xpath("//div[@class='page_content']");
# <h2 class="page_title">Worlds Of Fantasy : Medieval House</h2>
try:
product_name = product_block.find_element_by_xpath("//h2[@class='page_title']");
except Exception, err:
#print "Failed!\nError (%s): %s" % (err.__class__.__name__, err)
print 'return to main()'
return 0
else:
nameStr = str(product_name.text)
print 'product_name:' + nameStr
finally:
print "test over!"
return 1
test1 = call_productpage('https://www.daz3d.com/i/3d-models/-/desk-clocks?spmeta=ov&item=12657')
if test1:
print '\ntest 1 went OK\n'
else:
print '\ntest 1 did NOT go OK\n'
tes2 = call_productpage('https://www.daz3d.com/i/3d-models/-/dierdre-character-pack?spmeta=ov&item=397')
if test2:
print '\ntest 2 went OK\n'
else:
print '\ntest 2 did NOT go OK\n'
А вот скриншот консоли, показывающий исключение, которое я получаю:
Еще один вариант, который я думал об использовании, заключался в том, чтобы получить источник страницы из веб-драйвера и выполнить поиск, чтобы увидеть, был ли там тег, но, по-видимому, нет простого способа сделать ЭТО в веб-драйвере!