[Resolved] Проблема с идентификацией по XPATH

Здравствуйте, имею следующий элемент:

<img id="kJwFrd" class="filterToggler z-image" title="Видимость фильтров" src="http://eb-core-test-sso.otr.ru:7777/udu-webcenter/resourceproxy/~.portletId~3D~252Foracle~252Fadf~252Fportlet~252FUfosEXPWsrpPortletProducer~252Fap~252Fufosscrollerportlet_579fa5b0_014a_1000_8005_0a14224bbfd4~26clientId~3D1127031596~26resourceId~3Dwsrp-url~25253Dhttp~2525253A~2525252F~2525252Feb-core-test-ufosb~2525253A8889~2525252Fsufdclient~2525252Fportlets~2525252Fresources~2525252Fzkau~2525252Fweb~2525252F389a5975~2525252Fcity~2525252Ficons~2525252Fmiscellaneous~2525252Ffilter_on.png~252526wsrp-resourceID~25253D~252526wsrp-preferOperation~25253Dfalse~252526wsrp-requiresRewrite~25253Dtrue~252526wsrp-resourceState~25253D~252526wsrp-resourceCacheability~25253D~26baseUrl~3Dhttp~253A~252F~252Feb-core-test-sso.otr.ru~253A7777~252Fudu-webcenter~252Ffaces~252Foracle~252Fwebcenter~252Fportalapp~252Fpages~252Fnewdesign~252Fbpmenu.jspx~253F_adf.ctrl-state~253D18rujrlyny_24~26locale~3Dru~26checksum~3D49e0169f913d321777a79e98bb1e9f995d06b319/filter_on.png">

Айдишник динамический (всегда разный), параметр src длинный, но вроде статический, пытался по нему (полностью его вбил) найти элемент - не удалось.
Так же делаю вот как:

"//img[contains(@src, 'filter_on.png')]"

и не находит…
в чем проблема?

А по классу пробовали?

Как вариант, откройте страницу в Chrome.
Откройте инспектор.
Отредактируйте элемент <img>, удалите у него атрибут id.
В контекстном меню (на элементе) выберите Скопировать XPath и попробуйте на нём.

Например, ваш DOM выглядит так:

<!doctype html>
<head>
	<meta charset="utf-8">
</head>
<body>
	<div>
		<a href="#"><img id="kJwFrd" class="filterToggler z-image" title="Видимость фильтров" src="http://eb-core-test-sso.otr.ru:7777/udu-webcenter/resourceproxy/~.portletId~3D~252Foracle~252Fadf~252Fportlet~252FUfosEXPWsrpPortletProducer~252Fap~252Fufosscrollerportlet_579fa5b0_014a_1000_8005_0a14224bbfd4~26clientId~3D1127031596~26resourceId~3Dwsrp-url~25253Dhttp~2525253A~2525252F~2525252Feb-core-test-ufosb~2525253A8889~2525252Fsufdclient~2525252Fportlets~2525252Fresources~2525252Fzkau~2525252Fweb~2525252F389a5975~2525252Fcity~2525252Ficons~2525252Fmiscellaneous~2525252Ffilter_on.png~252526wsrp-resourceID~25253D~252526wsrp-preferOperation~25253Dfalse~252526wsrp-requiresRewrite~25253Dtrue~252526wsrp-resourceState~25253D~252526wsrp-resourceCacheability~25253D~26baseUrl~3Dhttp~253A~252F~252Feb-core-test-sso.otr.ru~253A7777~252Fudu-webcenter~252Ffaces~252Foracle~252Fwebcenter~252Fportalapp~252Fpages~252Fnewdesign~252Fbpmenu.jspx~253F_adf.ctrl-state~253D18rujrlyny_24~26locale~3Dru~26checksum~3D49e0169f913d321777a79e98bb1e9f995d06b319/filter_on.png"></a>
	</div>
</body>

1 лайк

Драйвер не находит? Какой exception? Как ищете (By / @FindBy + WebElement)? FirePath сколько нодов выдает в результатах поиска по заданному пути? Пробовали поиск относительно других элементов? Уверены, что нет проблем с ожиданием (обращение к элементу, который еще не отрендерился)?

Хочется еще про iframe добавить…

1 лайк

Да, веб-драйвер не находит.
Ошибка:

NoSuchElementException: Message: Unable to locate element: {"method":"xpath","selector":"//img[contains(@src, 'filter_on.png')]"}

Ищу с помощью webium:

_img_filter_on = Find(by=By.XPATH,
                          value="//img[contains(@src, 'filter_on.png')]")

а что добавить?)

Проверь не находится ли у тебя этот элемент в Iframe… если он там то тебе нужно будет сначала преключится на этот фрейм, а потом искать в нем элемент.

1 лайк

Да, разобрался, спасибо!)