Я делаю следующее в Selen 2 / WebDrive, используя Python и Firefox ...
Я открываю некоторые веб-страницы, которые мне нужно проверить на наличие конкретной строки - что, если присутствует, означает, что этохорошая страница для разбора.
Фраза, которую я ищу, это элемент h2, подобный следующему:
<h2 class="page_title">Worlds Of Fantasy : Medieval House</h2>
Если этот h2 отсутствует, я знаю, что мне не нужно работатьна нем просто вернитесь и получите следующий в строке.
В коде у меня есть блок try / exception / else, который ищет фразу, если он видит ее, он переходит к следующей части функции,Если нет, он должен перейти к else, что говорит о необходимости возврата.
В этом тесте вызываются 2 страницы - первая содержит фразу, вторая нет.
Первая страница открывается и проходит тест.
Вторая страница открывается, и я получаю отчет об исключении - но он никогда не возвращается к вызывающему коду в main ... itпросто останавливается.
Почему исключение не соответствует правильному пути возврата?
Вот код:
#!/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'
А вот скриншот консолипоказывая исключение, которое я получаю:
Еще один вариант, который я подумал об использовании, - получить исходный код страницы от веб-драйвера и найти, чтобы увидеть, был ли тег там.- но, видимо, в webdriver нет простого способа сделать это!