18 августа 2014 г.

Webdriver. Полезные фокусы. C#


1. Относительный Xpath

Часто необходимо найти элемент с помощью Xpath внутри уже найденного вебдрайвером WebElement-а. Используйте для этого относительный Xpath (точка вначале выражения).
Вот так:
var questionDiv = driver.FindElement(By.XPath("//div[@class='ac-item']"));
questionDiv.FindElement(By.XPath(".//label[@class='ac-title']")).Click();

2. Несколько примеров работы функции contains() в Xpath выражениях:

//span[contains(.,'Как узнать информацию')] -Будут найдены элементы span, в тексте которых содержится строка 'Как узнать информацию'.

//label[contains(@class,'ac-title')] -Будут найдены все элементы label, содержащие в названии класса строку ac-title.

//label[contains(span,'Как узнать информацию')] -Будут найдены все элемент label, у которых есть дочерний элемент span, содержащий в тексте строку 'Как узнать информацию'.

//label[contains(@class,'ac-title') and contains(span,'Как узнать информацию')]  -Будут найдены все элементы label, у которых есть класс, содержащий в названии строку 'ac-title' и дочерний элемент span, содержащий в тексте строку 'Как узнать информацию'.

3. Задача - получить текст элемента, который есть в DOM-модели, но не виден. 

Использование функции Text() не решает задачу - результат будет null.
Можно выкрутиться c помощью GetAttribute("textContent"):
driver.FindElement(By.XPath("//label[@class='ac-title']")).GetAttribute("textContent");

Комментариев нет:

Отправить комментарий