C # webdriver - как мне найти xpath из известного имени класса элемента? - PullRequest
0 голосов
/ 18 мая 2011

Я тестирую веб-сайт, на котором есть страница «Учетная запись», на которой отображается таблица доступных уровней подписки, где заголовки столбцов представляют собой учетные записи разных типов, а в строках перечислены все функции, которые доступны на каком уровне. E.g.:

<code>          fanboy       poweruser     neophyte     freeloader
Widgets   1,000        500           250          100
Doodads     750        350           100          100
Thingies    500        250           100           50
          [UPGRADE]    [UPGRADE]     [UPGRADE]    Your Plan  

Все это делается как вложенные div элементы с уникальными именами классов, поэтому поиск конкретных ячеек по их соответствующим именам классов несложно. Например:

var yourPlan = driver.FindElement(By.ClassName("your_plan"));  

Я также могу найти конкретные ячейки по их XPath, если я это уже знаю. Например:

var yourPlan = driver.FindElement(By.XPath(".//div[@class='your_plan']"));  

Но бывают случаи, когда мне нужно узнать xpath ячейки, к которой я пришел, с помощью имени класса, и, кажется, нет простого способа сделать это в Webdriver (C #). Кто-нибудь делал это раньше?

<ч /> РЕДАКТИРОВАТЬ: Приношу извинения всем за то, что не прояснил это: у меня нет проблем с поиском элемента по имени класса или другому атрибуту (или даже xpath, когда я его уже знаю). Но то, что мне нужно, - это способ для веб-драйвера сообщить полный путь xpath того, что он нашел мне, как только он найдет указанный элемент с помощью средств, отличных от xpath.

Надеюсь, это поможет.

Любая помощь приветствуется. Спасибо Грег

Ответы [ 2 ]

1 голос
/ 19 мая 2011

На самом деле у Selenium нет возможности предоставить вам эту информацию.Хотя есть некоторые инструменты, которые генерируют XPath для данного элемента (вспоминаются плагины Firebug и XPather для Firefox), Selenium не предоставляет эту функцию.Хотелось бы, чтобы у меня был лучший ответ для вас, но ответ - нет, Selenium не предоставит вам XPath для элемента, который вы нашли с помощью других средств.

0 голосов
/ 19 мая 2011

Просто создайте строку выражения XPath, например:

"//div[@class='" + className + "']"

Если имена классов действительно уникальны, это выражение XPath найдет только этот div.Если вы не знаете, является ли элемент div или что-то еще, используйте

"//*[@class='" + className + "']"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...