2013-05-29 8 views
1

Я новичок в селене.Идентифицировать объекты в селене

В моем приложении у него есть несколько вкладок, например «AAA», «ABC», «ADF»; Мне нужно автоматизировать щелчок на вкладке «ABC».

Эти вкладки имеют идентификаторы, и они являются «tab1», «tab2», «tab3». Я могу сделать это легко, используя идентификаторы. но я не хочу использовать это, потому что эти вкладки будут время от времени меняться. поэтому мне нужно использовать имя на вкладке, потому что оно уникально.

Скажите, пожалуйста, как это сделать.

Ниже мой тег:

<a id="tab2" class="current" onclick="expandcontent('sc2', this);" href="#"> ABC </a> 

Благодаря

ответ

5

Если это так, то вам, вероятно, придется возвратиться к XPath и выполнять текстовые запросы, например:

//a[text()='ABC'] 

Хотя, я бы посоветовал вам работать с вашей командой разработчиков, чтобы иметь последовательные идентификаторы. Согласование на основе текста прекрасное, но когда вы начинаете использовать старые браузеры, вы заметите, что это действительно замедляет тесты.

Однако вы также можете использовать селектора .LinkText и .PartialLinkText в API вашего языка - должна быть реализация этих селекторов в каждом API (C#, Ruby, Python и т. Д.). Ловушка здесь будет только для a (якорных) элементов. Однако, если это единственный тип элементов, который нужно выполнить, вы можете избежать использования этого вместо XPath.

3

Добро пожаловать в SO!

Как упоминал Арран, вам, скорее всего, лучше всего искать имена вкладок, используя XPath, но вы также можете использовать FindBy. Примером этого может быть:

@FindBy(css=<the CSS value for the tab>)  private WebElement pageTab2; 
@FindBy(id="tab2")       private WebElement pageTab2; 

Я могу только согласиться с тем, что Арран также упомянул о своих разработчиков, использующих более соответствующие соглашения об именовании, а также. Чем проще они делают вашу работу, тем больше вы можете сделать, чтобы сделать свою жизнь проще.

1

Простейшим ответом будет использование ... "link = ABC" или link = "ABC" (там есть начальное и конечное пространства).

0

Самый простой подход - использовать пути X, чтобы найти ваши вкладки.

Когда вы начинаете, есть два полезных инструмента, которые помогут вам найти пути X. Скачать Mozilla Firefox и получить эти два дополнения:

  • Web Driver Element Locator -После загрузки вы можете правой кнопкой мыши на веб-элемент и выберите X путь.
  • Selenium IDE -Это рекордер и предоставит вам X-пути или CSS каждого веб-элемента, с которым вы взаимодействуете.

Я бы рекомендовал начать с этих инструментов, чтобы помочь вам, так как вы только начинаете.

Что касается вашего вопроса: я рекомендовал бы использовать то, что сказал @Arran ...

//a[text()='ABC'] 

«а'-будет искать всю страницу для любого текста есть в одинарных кавычках„“

Если вы щелкните правой кнопкой мыши элемент или вкладку и выберите «Осмотреть». Затем вы просмотрите содержимое страницы для классов или div, которые помогут вам идентифицировать каждый отдельный элемент.

0
xpath=//a[contains(@class,"current") and contains(@text,"ABC")] 
+2

Попробуйте объяснить свой ответ. – Jensd

+0

По мере изменения идентификатора, но содержимое остается неизменным. Таким образом, xpath будет искать, что этот класс элемента является текущим и текстовым как ABC. –

Смежные вопросы