//*[contains(string(.), "Run, Sarah, run!")]
возвращает все элементы (начиная с узла html
до последнего узла-потомка), которые содержат эту строку.
//*[contains(text(), "Run, Sarah, run!")]
ничего не возвращает, поскольку "Run, Sarah, run!"
является составным текстом из нескольких текстовых узлов, но не из одного текстового узла
Вы можете использовать ниже, чтобы сопоставить курсивный узел с требуемым текстом:
'//i[normalize-space()="Run, Sarah, run!"]'
Если вы не хотите указывать имя узла, вы можете попробовать
'//*[normalize-space()="Run, Sarah, run!" and not(./*[normalize-space()="Run, Sarah, run!"])]'