2015-06-04 3 views
1

Я собрал веб-искатель с Selenium, который использует XPath для поиска элементов. На веб-странице я соскабливаю, есть два возможных макета, которые загружаются, в зависимости от содержимого.Попробуйте альтернативные xpaths, или продолжите

Если я запускаю мой код на неправильной раскладке, я получаю ошибку: Message: Unable to locate element: {"method":"xpath","selector":

Как я могу создать try/except (или аналогичный), который пытается альтернативный XPath, если первый XPath нет? Или, если он отсутствует, перейдите к следующему разделу кода?

+1

Так это на сердечнике вопрос Python, как написать код обработки исключений? Вы ищете исключение NoSuchElementException (говорит http://selenium-python.readthedocs.org/en/latest/locating-elements.html). Попробуйте пример кода на http://stackoverflow.com/a/12150013/423105 – LarsH

ответ

0

Вот простое решение:

try: 
    element_in_layout_1 = driver.find_element_by_xpath("my_xpath_1") 
except: 
    try: 
     element_in_layout_2 = driver.find_element_by_xpath("my_xpath_2") 
    except: 
     print "No Element was found" 
     pass 
    else: 
     print "Element in Layout 2 was found" 
else: 
    print "Element in Layout 1 was found" 
1

у меня нет опыта с Python, так что я не в состоянии написать вам пример кода, но вы должны создать два try/catch (или в данном случае try/except) блок, где вы пытаетесь найти свой элемент с find_element_by_xpath. После этого уловите NoSuchElementException и вы можете работать с WebElement (s).

В JAVA это выглядит примерно так:

Boolean isFirstElementExist, isSecondElementExist = true; 
    WebElement firstElement, secondElement; 

    try { 
    firstElement = driver.findElement(By.xpath("first xpath")); 
    } catch (NoSuchElementException e) { 
    isFirstElementExist = false; 
    } 

    try { 
    secondElement = driver.findElement(By.xpath("second xpath")); 
    } catch (NoSuchElementException e) { 
    isSecondElementExist = false; 
    } 

    //... work with the WebElement 
Смежные вопросы