Вы были довольно близко. Как правило, не рекомендуется создавать локатор, который начинается с тега HTML или имеет слишком много уровней, потому что он более хрупкий (с большей вероятностью ломается при изменении страницы). В идеале вы найдете элемент label по текстовой метке, например, «ID участника», а затем найдите следующий текстовый узел. Большим преимуществом этого метода является то, что он привязан к метке «Идентификатор участника». Некоторые из других ответов жестко запрограммированы для конкретного текстового узла, что может быть хорошо, но если данные изменятся, они могут вернуть неправильное значение.
Вы можете обернуть все это в функцию, где вы передаете метку, и она возвращает значение.
public string GetValue(string labelName)
{
IWebElement e = Driver.FindElement(By.XPath($"//span[contains(.,'{labelName}')]"));
string s = (string)((IJavaScriptExecutor)Driver).ExecuteScript("return arguments[0].nextSibling.textContent;", e);
return s.Trim();
}
и вы бы назвали это как
GetValue("Member ID")