python 3.x – Siempre obtengo el mismo registro dentro de una lista

Tu problema es que la expresión xpath() que usas dentro del bucle contiene una ruta absoluta. Es decir, aquí por ejemplo:

  precio= articulo.xpath('//span(@class="price-tag-fraction")//text()').get()

Aunque articulo es un elemento particular, al ejecutar sobre él .xpath() puedes pasarle una ruta absoluta o relativa. Si se la pasas absoluta (que comience por /) se aplicará desde la raíz del documento, en vez de desde ese elemento.

Cambialo por una ruta relativa, así:

            for articulo in response.xpath('//li(@class="ui-search-layout__item")'):
               precio= articulo.xpath('.//span(@class="price-tag-fraction")//text()').get()
               titulo= articulo.xpath('.//h2(@class="ui-search-item__title")//text()').get()

Ahora el resultado será:

{'price': '2.099', 'title': 'Plants vs. Zombies: Garden Warfare 2 Standard Edition Electronic Arts PS4 Físico'}
{'price': '1.399', 'title': 'FIFA 19 Standard Edition Electronic Arts PS4 Físico'}
{'price': '3.199', 'title': 'Gran Turismo Sport Standard Edition Sony PS4 Físico'}
// ... omitidos ...
{'price': '2.077', 'title': 'Juego Ps4 Shadow Of War Middle Earth Oferta Navidad'}
{'price': '1.799', 'title': 'Metal Gear Survive Juego Ps4 Fisico/ Mipowerdestiny'}