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

Фотография

выбор элемента из списка с помощью Selenium + Python


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

#21 Freiman

Freiman

    Профессионал

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

Отправлено 07 июня 2016 - 13:31

Вы в систему из скрипта успешно залогинились, успешно загрузили проект, страница при прогоне скрипта однозначно видна?
  • 0

#22 TatyanaV

TatyanaV

    Опытный участник

  • Members
  • PipPipPipPip
  • 388 сообщений
  • ФИО:Воробьева Татьяна


Отправлено 07 июня 2016 - 13:42

<ul id="design-tree" class="treeview-gray treeview">

 

Я правильно понимаю, что это некое разворачивающееся дерево, внутри которого нужный вам элемент?

Если так (и при этом изначально оно свернуто) - я не нашла, где вы его разворачиваете.

Возможно, скрипт не видит элемент дерева, потому что оно свернуто, а элементов внутри дерева - для скрипта не существует.


  • 0

#23 Freiman

Freiman

    Профессионал

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

Отправлено 07 июня 2016 - 13:48

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

#24 Darksol89

Darksol89

    Активный участник

  • Members
  • PipPip
  • 81 сообщений
  • ФИО:Иван
  • Город:Санкт-Петербург


Отправлено 07 июня 2016 - 13:51

когда я запускаю скрипт, он логинится, создает проект, вписывает нужный мне параметр в строку таблицы и после должен открывать нужный мне диалог. Вот в этом месте валится. Дерево развернуто по умолчанию.


  • 0

#25 TatyanaV

TatyanaV

    Опытный участник

  • Members
  • PipPipPipPip
  • 388 сообщений
  • ФИО:Воробьева Татьяна


Отправлено 07 июня 2016 - 13:53

Без код мы тут просто на кофейной гуще гадаем. У меня пока больше нет предположений.


  • 0

#26 Darksol89

Darksol89

    Активный участник

  • Members
  • PipPip
  • 81 сообщений
  • ФИО:Иван
  • Город:Санкт-Петербург


Отправлено 07 июня 2016 - 13:55

я не могу файл прикрепить с кодом, Ошибка Загрузка не удалась. Пожалуйста сообщите об этом администрации форума.


  • 0

#27 TatyanaV

TatyanaV

    Опытный участник

  • Members
  • PipPipPipPip
  • 388 сообщений
  • ФИО:Воробьева Татьяна


Отправлено 07 июня 2016 - 13:57

А вы какой файл прикрепляете? Картинку? Может быть можно просто текст под спойлер?


  • 0

#28 aid

aid

    Опытный участник

  • Members
  • PipPipPipPip
  • 448 сообщений
  • ФИО:Николай


Отправлено 07 июня 2016 - 13:57

я не могу файл прикрепить с кодом, Ошибка Загрузка не удалась. Пожалуйста сообщите об этом администрации форума.

 

Выложите на пастебин или гитхаб и ссылку дайте


  • 0

#29 Darksol89

Darksol89

    Активный участник

  • Members
  • PipPip
  • 81 сообщений
  • ФИО:Иван
  • Город:Санкт-Петербург


Отправлено 07 июня 2016 - 14:05

вот код страницы http://pastebin.com/J5K9CNiM


  • 0

#30 Freiman

Freiman

    Профессионал

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

Отправлено 07 июня 2016 - 14:13

Потому что

driver.find_element_by_xpath("(//a[@id='tree36'])[2]").click()

У тебя в меню точно такой же айдишник есть :)


  • 0

#31 Freiman

Freiman

    Профессионал

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

Отправлено 07 июня 2016 - 14:14

Соответственно, ты пытаешься кликнуть по тому, который внутри верхнего меню (Active Design), а он, есессно, не виден.

А точно такой же второй у тебя в левом меню, который виден, но вот абсолютно идентичен верхнему по айдишникам, поэтому надо искать как раз второй элемент.


  • 0

#32 Darksol89

Darksol89

    Активный участник

  • Members
  • PipPip
  • 81 сообщений
  • ФИО:Иван
  • Город:Санкт-Петербург


Отправлено 07 июня 2016 - 14:19

И как мне совершить клик по тому, который мне нужен?


  • 0

#33 TatyanaV

TatyanaV

    Опытный участник

  • Members
  • PipPipPipPip
  • 388 сообщений
  • ФИО:Воробьева Татьяна


Отправлено 07 июня 2016 - 14:19

А еще у дивов айдишники есть у многих - надо их использовать для большей точности.

Попробуйте открыть этот же сайт через хром, f12 -> Console. 

А дальше пишите $$("ваш_локатор_css") или$$("ваш_локатор_xpath") и жмете интер.

Хром покажет, есть ли такие элементы и сколько.

Если больше одного - надо искать более оптимальный локатор.


  • 0

#34 TatyanaV

TatyanaV

    Опытный участник

  • Members
  • PipPipPipPip
  • 388 сообщений
  • ФИО:Воробьева Татьяна


Отправлено 07 июня 2016 - 14:22

//div[@class='portlet-content']//a[@id='tree36'] или div.portlet-content a#tree36

если не ошибаюсь

 

такой же элемент из меню лежит в диве с id 'mainMbMenu'


  • 0

#35 Darksol89

Darksol89

    Активный участник

  • Members
  • PipPip
  • 81 сообщений
  • ФИО:Иван
  • Город:Санкт-Петербург


Отправлено 07 июня 2016 - 14:25

$$("tree36_xpath")

Попробовал, приходит []


  • 0

#36 Darksol89

Darksol89

    Активный участник

  • Members
  • PipPip
  • 81 сообщений
  • ФИО:Иван
  • Город:Санкт-Петербург


Отправлено 07 июня 2016 - 14:29

Сорри, если туплю, просто работаю с Селениумом и Питоном 5 день....


  • 0

#37 TatyanaV

TatyanaV

    Опытный участник

  • Members
  • PipPipPipPip
  • 388 сообщений
  • ФИО:Воробьева Татьяна


Отправлено 07 июня 2016 - 14:32

$$("tree36_xpath")

Попробовал, приходит []

Так такого и нету. 

"_xpath" и "_css" чтобы указать, где css использовать, где xpath. 

Указывайте просто локатор свой.

Только "tree36" - не локатор.

 

Попробуйте поискать вот так:

$x("//div[@class='portlet-content']//a[@id='tree36']") 

$x("//*[@id='tree36']")

$$("div.portlet-content a#tree36")

$$("#tree36")

 

# = id, . = class

 

На примере: $$("#tree36")

$$ - значит указан css локатор, надо по нему искать

# - айдишник

tree36 - название айдишника

было бы a#tree36 - искался бы элемент а с таким айдишником, без указания - любой с таким айдишником.

 

Тоже самое: $x("//*[@id='tree36']")

$x - надо искать по xpath

//* - любой элемент где-то на странице

[@id='tree36'] - id у этого элемента д.б. tree36

 

Вам надо попробовать просто через хром попрактиковаться локаторы искать/писать.


  • 1

#38 Darksol89

Darksol89

    Активный участник

  • Members
  • PipPip
  • 81 сообщений
  • ФИО:Иван
  • Город:Санкт-Петербург


Отправлено 07 июня 2016 - 14:42

Хорошо, ввел в консоли $x("//*[@id='tree36']")
получил 2 местонахождения, я так понимаю это верхнее меню и слева.

Но если они имеют одинаковый айди, то почему он не открывает ничего? пишет мол нет элемента.


  • 0

#39 Darksol89

Darksol89

    Активный участник

  • Members
  • PipPip
  • 81 сообщений
  • ФИО:Иван
  • Город:Санкт-Петербург


Отправлено 07 июня 2016 - 14:42

ну и кроме айдишника, класса и ссылки там нет ничего. А я пробовал искать и кликать элемент по всему, что у нег оесть


  • 0

#40 TatyanaV

TatyanaV

    Опытный участник

  • Members
  • PipPipPipPip
  • 388 сообщений
  • ФИО:Воробьева Татьяна


Отправлено 07 июня 2016 - 14:47

Попробуйте поискать вот так:

$x("//div[@class='portlet-content']//a[@id='tree36']") 

или

$$("div.portlet-content a#tree36")

Сколько результатов вернет?

Заодно можно на результат навести мышку - он на форме подсветит найденный элемент.

Попробуйте поискать вот так:

$x("//div[@class='portlet-content']//a[@id='tree36']") 

$x("//*[@id='tree36']")

$$("div.portlet-content a#tree36")


  • 0


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

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