Рассмотрите этот код, пожалуйста:
By byCheckAll = By.XPath("//span[text()='Check all']");
IWebElement thingy = BrowserWindow.Instance.Driver.FindElement(byCheckAll);
Когда я устраняю проблему, я вижу, что свойство Text элемента thingy является пустой строкой:
enter описание изображения здесь
Я смотрю на то, почему элемент не взаимодействует, и замечаю это, поэтому мне интересно, какой элемент даже обнаруживается.
Я не вижу, как искать элемент за текстом, не получающий ошибку и имеющий пустой текст может произойти. Пожалуйста, объясни. СПАСИБО!
РЕДАКТИРОВАТЬ: трудно определить, сколько кода / информации имеет отношение к вопросу. Поэтому я добавляю это в ответ на комментарии.
Рассматриваемый метод таков:
public void CheckAll()
{
ClickButtonToDrop();
By byRootDiv = By.XPath("//div[starts-with(@class, 'ui-multiselect-menu')]");
var webElements = BrowserWindow.Instance.Driver.FindElements(byRootDiv);
IWebElement rootElement = null;
foreach (var webElement in webElements)
{
if (webElement.Displayed)
{
rootElement = webElement;
BrowserWindow.Instance.HighlightElement(webElement);
}
}
Element clickAllLink = new Element(rootElement, By.ClassName("ui-multiselect-all"));
//By byCheckAll = By.XPath("//span[text()='Check All']/parent::div[@tag='a']"); // get the span, then the parent link
By byCheckAll = By.XPath("//span[text()='Check all']"); // get the span, then the parent link
IWebElement thingy = rootElement.FindElement(byCheckAll);
//clickAllLink.Highlight();
//clickAllLink.Click();
}
rootElement - это div, в котором живет вещь IWebElement.
HTML выделенного DIV -
Отметить все Снять все Посетить Регистрация
То же самое HTML как показано в Chrome инструментах разработчика с выделенным div (метод выделения в приведенном выше коде)
введите описание изображения здесь
Нет ошибок Точка, в которой установлен вещь, где находится точка останова, где я установил точку останова, и я установил точку останова для получения информации на снимке экрана окна наблюдения.