If I understand your question correctly, this may do the trick:
//ul/li[contains(.,'ModelA')]/following-sibling::bi
Edit:
Following @Thomas Weller's correct observation in the comments below, here's a simple explanation of this xpath expression:
Your target <bi>
is a child of the target <ul>
which itself has another child (<li>
, hence, the //ul/li
part), which itself (i.e., the <li>
) contains the text li[contains(.,'ModelA')]
). Since both <li>
and <bi>
, as children of the same <ul>,
are siblings, once that <li>
is located, the next stop is to locate its sibling <bi>
(hence the final /following-sibling::bi
).