by.linkText() — это один из локаторов Protractor,
предназначенный для поиска элементов <a> на
веб-странице по полному тексту ссылки. Этот метод
особенно полезен, когда текст ссылки уникален и легко идентифицируем. Он
упрощает взаимодействие с гиперссылками, позволяя точно определить
элемент без использования сложных CSS-селекторов или XPath.
element(by.linkText('Текст ссылки'))
element — функция Protractor для
поиска одного элемента на странице.by.linkText() — локатор, который ищет
ссылку по её полному видимому тексту.Пример клика по ссылке:
element(by.linkText('Перейти к оформлению')).click();
В этом примере Protractor ищет ссылку с текстом
Перейти к оформлению и выполняет по ней действие клика.
by.partialLinkText()Метод by.linkText() ищет полное совпадение
текста, тогда как by.partialLinkText() позволяет
искать по части текста. Это важно, если текст ссылки может меняться
динамически или содержит переменные элементы.
Пример использования by.partialLinkText():
element(by.partialLinkText('оформ')).click();
Такой подход более гибкий, но менее строгий: он может совпадать с несколькими ссылками, если текст частично повторяется.
by.linkText() позволяет
перейти к нужной странице без обращения к сложным селекторам:element(by.linkText('Контакты')).click();
expect(browser.getCurrentUrl()).toContain('/contacts');
isPresent()
или isDisplayed():let link = element(by.linkText('Вход'));
expect(link.isPresent()).toBe(true);
expect(link.isDisplayed()).toBe(true);
element(by.linkText('Подробнее')).click();
browser.getCurrentUrl().then(url => {
expect(url).toBe('https://example.com/details');
});
ExpectedConditions) перед взаимодействием:let EC = protractor.ExpectedConditions;
let link = element(by.linkText('Скачать'));
browser.wait(EC.visibilityOf(link), 5000);
link.click();
by.linkText() можно использовать в комбинации с
element.all() для работы с несколькими ссылками на
странице:
let links = element.all(by.linkText('Подробнее'));
expect(links.count()).toBe(3);
links.get(0).click();
Это удобно, если на странице присутствует несколько идентичных ссылок, и требуется выбор конкретной по индексу.
На динамических страницах, где ссылки могут генерироваться
JavaScript, важно учитывать задержку появления элементов. Часто
используют цепочку с ExpectedConditions:
let EC = protractor.ExpectedConditions;
let dynamicLink = element(by.linkText('Загрузить отчет'));
browser.wait(EC.elementToBeClickable(dynamicLink), 7000);
dynamicLink.click();
Это гарантирует, что клик произойдет только после того, как ссылка станет интерактивной.
by.linkText() — оптимальный выбор для уникальных
статических ссылок.by.partialLinkText().ExpectedConditions при работе с динамическим
контентом.Использование by.linkText() делает тесты более читаемыми
и понятными, особенно когда ссылки на странице имеют уникальные и
понятные тексты.