Перейти к содержимому

Практикум по тест-дизайну 2.0
онлайн, начало 29 ноября
Тестирование мобильных приложений
онлайн, начало 27 ноября
Автоматизатор мобильных приложений
онлайн, начало 27 ноября
Программирование на Python для тестировщиков
онлайн, начало 22 ноября
Фотография

Поиск элемента

python selenium webdriver

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 16

#1 andreykou

andreykou

    Новый участник

  • Members
  • Pip
  • 39 сообщений
  • ФИО:Андрей Куриленко

Отправлено 23 Август 2016 - 14:15

Привет всем,

 

Как можно добраться до элемента, если такая ситуация:

 

<li class="dropdown">
 

      <a href="/logout">

 

               <i class="fa fa-sign-out"></i>
         Выход
       </a>
</li>
 
Мне нужно нажать на кнопку выход
 
Спасибо всем за ответы!

  • 0

#2 Lzk

Lzk

    Специалист

  • Members
  • PipPipPipPipPip
  • 504 сообщений
  • ФИО:Олег
  • Город:Мск

Отправлено 23 Август 2016 - 14:26

//a[text()='Выход']
//li[@class='dropdown']/a
//a[@href='/logout']

  • 1

#3 andreykou

andreykou

    Новый участник

  • Members
  • Pip
  • 39 сообщений
  • ФИО:Андрей Куриленко

Отправлено 23 Август 2016 - 14:34

//a[text()='Выход']
//li[@class='dropdown']/a
//a[@href='/logout']

Ошибку кидает:

 

selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: {"method":"xpath","selector":"//a[@href='/logout']"}
Stacktrace:
    at FirefoxDriver.prototype.findElementInternal_ (file:///tmp/tmp4Ps6lb/extensions/fxdriver@googlecode.com/components/driver-component.js:10770)
    at FirefoxDriver.prototype.findElement (file:///tmp/tmp4Ps6lb/extensions/fxdriver@googlecode.com/components/driver-component.js:10779)
    at DelayedCommand.prototype.executeInternal_/h (file:///tmp/tmp4Ps6lb/extensions/fxdriver@googlecode.com/components/command-processor.js:12661)
    at DelayedCommand.prototype.executeInternal_ (file:///tmp/tmp4Ps6lb/extensions/fxdriver@googlecode.com/components/command-processor.js:12666)
    at DelayedCommand.prototype.execute/< (file:///tmp/tmp4Ps6lb/extensions/fxdriver@googlecode.com/components/command-processor.js:12608)

  • 0

#4 Freiman

Freiman

    Гуру

  • Members
  • PipPipPipPipPipPip
  • 1 452 сообщений
  • ФИО:Андрей Адеркин
  • Город:Йошкар-Ола

Отправлено 23 Август 2016 - 15:05

Есть подозрение, что там какое-то выпадающее меню, и сначала надо кликнуть на элемент верхнего уровня, чтобы его раскрыть, а потом на "Выход".
  • 0

#5 andreykou

andreykou

    Новый участник

  • Members
  • Pip
  • 39 сообщений
  • ФИО:Андрей Куриленко

Отправлено 23 Август 2016 - 17:56

Есть подозрение, что там какое-то выпадающее меню, и сначала надо кликнуть на элемент верхнего уровня, чтобы его раскрыть, а потом на "Выход".


Да вроде нет. Когда захожу на страницу меню не выподает.
  • 0

#6 elvis

elvis

    Постоянный участник

  • Members
  • PipPipPip
  • 189 сообщений
  • Город:Tallinn


Отправлено 23 Август 2016 - 20:47

приведите больший кусок кода. элемент li там явно не один?


  • 0

#7 andreykou

andreykou

    Новый участник

  • Members
  • Pip
  • 39 сообщений
  • ФИО:Андрей Куриленко

Отправлено 24 Август 2016 - 03:16

приведите больший кусок кода. элемент li там явно не один?


Ни один.
  • 0

#8 serjb9

serjb9

    Новый участник

  • Members
  • Pip
  • 68 сообщений

Отправлено 24 Август 2016 - 05:08

а так?

//li[@class='dropdown']/a[@href='/logout']

  • 1

#9 andreykou

andreykou

    Новый участник

  • Members
  • Pip
  • 39 сообщений
  • ФИО:Андрей Куриленко

Отправлено 24 Август 2016 - 05:24

 

а так?

//li[@class='dropdown']/a[@href='/logout']

Работает...:)

Спасибо за помощь!!!!

Так я понимаю, что нужно указать полный путь?

Даже если он закрыт в блок div?


  • 0

#10 serjb9

serjb9

    Новый участник

  • Members
  • Pip
  • 68 сообщений

Отправлено 24 Август 2016 - 06:54

Если один элемент на странице - то можно было просто по дереву с помощью / спустится, как подсказал Lzk.

У вас скорее всего более 1 элемента со схожей структурой, которые были найдены по локатору "//li[@class='dropdown']/a".

Поэтому мы указали более точный путь, с конкретной ссылкой.


  • 1

#11 andreykou

andreykou

    Новый участник

  • Members
  • Pip
  • 39 сообщений
  • ФИО:Андрей Куриленко

Отправлено 24 Август 2016 - 07:02

Если один элемент на странице - то можно было просто по дереву с помощью / спустится, как подсказал Lzk.

У вас скорее всего более 1 элемента со схожей структурой, которые были найдены по локатору "//li[@class='dropdown']/a".

Поэтому мы указали более точный путь, с конкретной ссылкой.

 

Есть какие-нибудь программы, которые могут найти элемент быстро и указать его путь?

Кроме firebug.


  • 0

#12 serjb9

serjb9

    Новый участник

  • Members
  • Pip
  • 68 сообщений

Отправлено 24 Август 2016 - 07:33

 

Есть какие-нибудь программы, которые могут найти элемент быстро и указать его путь?

Кроме firebug.

 

Сначала разберитесь самостоятельно в xpath.

В качестве вспомогательного плагина, можно поюзать Webdriver Element Locator для FF, но он не всегда сможет однозначно идентифицировать локатор.


  • 1

#13 andreykou

andreykou

    Новый участник

  • Members
  • Pip
  • 39 сообщений
  • ФИО:Андрей Куриленко

Отправлено 24 Август 2016 - 08:22

 

 

Есть какие-нибудь программы, которые могут найти элемент быстро и указать его путь?

Кроме firebug.

 

Сначала разберитесь самостоятельно в xpath.

В качестве вспомогательного плагина, можно поюзать Webdriver Element Locator для FF, но он не всегда сможет однозначно идентифицировать локатор.

 

 А как я могу применить функцию decode() в таком случаи?

 

driver.find_element_by_xpath("//span[contains(.,'форум')]")


  • 0

#14 Lzk

Lzk

    Специалист

  • Members
  • PipPipPipPipPip
  • 504 сообщений
  • ФИО:Олег
  • Город:Мск

Отправлено 24 Август 2016 - 08:29

 а для чего тебе это ?

a = "форум";
driver.find_element_by_xpath("//span[contains('" + a.decode() + "')]")

попробуй вот так , если используешь Python

el = u"//span[contains('форум')]";
driver.find_element_by_xpath(el)

  • 1

#15 andreykou

andreykou

    Новый участник

  • Members
  • Pip
  • 39 сообщений
  • ФИО:Андрей Куриленко

Отправлено 24 Август 2016 - 08:40

 

 а для чего тебе это ?

a = "форум";
driver.find_element_by_xpath("//span[contains('" + a.decode() + "')]")

попробуй вот так , если используешь Python

el = u"//span[contains('форум')]";
driver.find_element_by_xpath(el)

Ошибку дает

 

SyntaxError: Non-ASCII character '\xd0'


  • 0

#16 Lzk

Lzk

    Специалист

  • Members
  • PipPipPipPipPip
  • 504 сообщений
  • ФИО:Олег
  • Город:Мск

Отправлено 24 Август 2016 - 09:34

SyntaxError: Non-ASCII character '\xd0'

 

 

в начало файла добавь

 

# coding=utf-8


  • 0

#17 andreykou

andreykou

    Новый участник

  • Members
  • Pip
  • 39 сообщений
  • ФИО:Андрей Куриленко

Отправлено 24 Август 2016 - 09:41

 

SyntaxError: Non-ASCII character '\xd0'

 

 

в начало файла добавь

 

# coding=utf-8

 

 

Работает спасибо большое!


  • 0


Программирование на С# для тестировщиков
онлайн
Автоматизатор мобильных приложений
онлайн
Selenium WebDriver: полное руководство
онлайн
Программирование на Python для тестировщиков
онлайн




Темы с аналогичным тегами python, selenium, webdriver

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных

Яндекс.Метрика
Реклама на портале