выбор элемента из списка с помощью Selenium + Python
#21
Отправлено 07 июня 2016 - 13:31
#22
Отправлено 07 июня 2016 - 13:42
<ul id="design-tree" class="treeview-gray treeview">
Я правильно понимаю, что это некое разворачивающееся дерево, внутри которого нужный вам элемент?
Если так (и при этом изначально оно свернуто) - я не нашла, где вы его разворачиваете.
Возможно, скрипт не видит элемент дерева, потому что оно свернуто, а элементов внутри дерева - для скрипта не существует.
#23
Отправлено 07 июня 2016 - 13:48
Если автор скрипта какой-то из этих шагов пропустил вначале, то, разумеется, элемент не находится.
#24
Отправлено 07 июня 2016 - 13:51
когда я запускаю скрипт, он логинится, создает проект, вписывает нужный мне параметр в строку таблицы и после должен открывать нужный мне диалог. Вот в этом месте валится. Дерево развернуто по умолчанию.
#25
Отправлено 07 июня 2016 - 13:53
Без код мы тут просто на кофейной гуще гадаем. У меня пока больше нет предположений.
#26
Отправлено 07 июня 2016 - 13:55
я не могу файл прикрепить с кодом, Ошибка Загрузка не удалась. Пожалуйста сообщите об этом администрации форума.
#27
Отправлено 07 июня 2016 - 13:57
А вы какой файл прикрепляете? Картинку? Может быть можно просто текст под спойлер?
#28
Отправлено 07 июня 2016 - 13:57
я не могу файл прикрепить с кодом, Ошибка Загрузка не удалась. Пожалуйста сообщите об этом администрации форума.
Выложите на пастебин или гитхаб и ссылку дайте
#30
Отправлено 07 июня 2016 - 14:13
Потому что
driver.find_element_by_xpath("(//a[@id='tree36'])[2]").click()
У тебя в меню точно такой же айдишник есть :)
#31
Отправлено 07 июня 2016 - 14:14
Соответственно, ты пытаешься кликнуть по тому, который внутри верхнего меню (Active Design), а он, есессно, не виден.
А точно такой же второй у тебя в левом меню, который виден, но вот абсолютно идентичен верхнему по айдишникам, поэтому надо искать как раз второй элемент.
#32
Отправлено 07 июня 2016 - 14:19
И как мне совершить клик по тому, который мне нужен?
#33
Отправлено 07 июня 2016 - 14:19
А еще у дивов айдишники есть у многих - надо их использовать для большей точности.
Попробуйте открыть этот же сайт через хром, f12 -> Console.
А дальше пишите $$("ваш_локатор_css") или$$("ваш_локатор_xpath") и жмете интер.
Хром покажет, есть ли такие элементы и сколько.
Если больше одного - надо искать более оптимальный локатор.
#34
Отправлено 07 июня 2016 - 14:22
//div[@class='portlet-content']//a[@id='tree36'] или div.portlet-content a#tree36
если не ошибаюсь
такой же элемент из меню лежит в диве с id 'mainMbMenu'
#35
Отправлено 07 июня 2016 - 14:25
$$("tree36_xpath")
Попробовал, приходит []
#36
Отправлено 07 июня 2016 - 14:29
Сорри, если туплю, просто работаю с Селениумом и Питоном 5 день....
#37
Отправлено 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
Вам надо попробовать просто через хром попрактиковаться локаторы искать/писать.
#38
Отправлено 07 июня 2016 - 14:42
Хорошо, ввел в консоли $x("//*[@id='tree36']")
получил 2 местонахождения, я так понимаю это верхнее меню и слева.
Но если они имеют одинаковый айди, то почему он не открывает ничего? пишет мол нет элемента.
#39
Отправлено 07 июня 2016 - 14:42
ну и кроме айдишника, класса и ссылки там нет ничего. А я пробовал искать и кликать элемент по всему, что у нег оесть
#40
Отправлено 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 анонимных