Как я могу ссылаться на строковую переменную в элементе map: util в весеннем XML-файле, если строка определена в том же файле?

1

Ниже приведен контекст файла xml, где я определяю карту и ее элементы. Некоторые элементы на карте будут состоять из xpaths, где некоторая часть xpaths будет одинаковой. Я хочу создать переменные, которые будут представлять части этих xpaths, которые избыточны по всем элементам.

Я определил компонент с идентификатором и свойством и значением. Независимо от того, что я пытаюсь, я не могу ссылаться на ценность компонента. Все, что я когда-либо получаю, когда запрашиваю значение Map.get("devo"). Get ("error404CategoriesContainer") - "$ {errorContainer}". Я хочу, чтобы он дал мне "//div [@id = 'noResultsFeatures']//div [contains (@class, 'noResultsFeaturesContainer')]".

Боб, который я пытаюсь создать как переменную, начинается с <bean id = "errorContainer" Элемент карты, в котором я пытаюсь использовать его, - это элемент <entry key = "error404CategoriesContainer". Независимо от того, какие три вещи я стараюсь, я всегда получаю то же значение. Текстовое значение элемента на карте, а не текстовое значение переменной.

Я искал везде, но я не могу найти решение. Я попробовал символ # вместо символа $. Я пробовал разные способы определения компонента и пытаюсь "отбросить" компонент, но все это безуспешно. Может ли кто-нибудь привести меня к решению?

Вот содержимое xml файла

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd">

<bean id="errorContainer" class="java.lang.String">
    <property name="error404CategoryContainer" value="//div[@id='noResultsFeatures']//div[contains(@class,'noResultsFeaturesContainer')]"/>
</bean>

<util:map id="devo">
    <entry key="FourOFour">
        <util:map>                
            <entry key="error404FeaturedCategoriesHeader" value="//h2[@id='noResultsFeaturesHeader' and contains(text(),'Featured Categories')]" />


   None of these works – I only have one in the file at a time.

            <entry key="error404CategoriesContainer" value="${errorContainer}" />
            <entry key="error404CategoriesContainer" value="${errorContainer. error404CategoryContainer}" />
            <entry key="error404CategoriesContainer" value="${error404CategoryContainer}" />


            <entry key="error404CategoriesContainerLinks" value="//div[@id='noResultsFeatures']//div[contains(@class,'noResultsFeaturesContainer')][${1}]//ul//li" />
            <entry key="error404CategoriesContainerLinkByCategoryAndLinkNumber" value="//div[@id='noResultsFeatures']//div[contains(@class,'noResultsFeaturesContainer')][${1}]//ul//li[${2}]//a" />
        </util:map>
    </entry>
</util:map>

Теги:
spring
xpath
selenium
variables

1 ответ

0

Вам необходимо определить PropertySourcesPlaceholderConfigurer в контексте вашего приложения с помощью <context: property-placeholder.../>. В параметрах можно определить свойства как пары ключ-значение и обратиться к значениям с синтаксисом $ {key}.

См. Здесь: http://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/support/PropertySourcesPlaceholderConfigurer.html

Ещё вопросы

Сообщество Overcoder
Наверх
Меню