Что является эквивалентом селектора в "XPath" (Selenium) в FluentLenium
Моя проблема в том, что я не могу понять эквивалент селектора XPath(селен) в FluentLenium.
Спасибо.
2 ответа
Мне кажется, что у FluentLenium нет эквивалента By.xpath (By.id и т. Д.), Поскольку он опирается исключительно на CssSelector.
Так как вы можете использовать пользовательский фильтр с:
содержит содержит Word notContains начинается With notStartsWith заканчивается With notEndsWith
Лично я не вижу никакой причины использовать XPath. Более того, XPath часто считают "плохой практикой" для поиска веб-элемента.
ДА! В FluentLenium 3.4.0 они имеют аннотации @FindBy, которые позволят вам найти FluentWebElements по xpath.
import org.fluentlenium.adapter.junit.FluentTest;
import org.fluentlenium.core.FluentPage;
import org.fluentlenium.core.annotation.Page;
import org.fluentlenium.core.annotation.PageUrl;
import org.fluentlenium.core.domain.FluentWebElement;
import org.junit.Test;
import org.openqa.selenium.support.FindBy;
@PageUrl("http://www.kennethkuhn.com/")
class Simple extends FluentPage {
@FindBy(xpath = "/html/body/table/tbody[5]/tr/td[1]/center/a[1]/b/font")
FluentWebElement element;
public void enterMuseum(){
element.click();
}
}
public class test extends FluentTest {
@Page
Simple page;
@Test
public void testStuff(){
goTo(page).enterMuseum();
}
}
PS: в некоторых случаях xpath чрезвычайно полезен, например, когда вы работаете над несколькими унаследованными приложениями с похожими интерфейсами, которые никогда не меняются (идентификатор / имя / класс различаются для каждого приложения), но все же необходимо протестировать, потому что Бэк-энды могут все еще ломать вещи в ревизиях. Хотя, если тестируемое веб-приложение изменится хотя бы незначительно, хотя есть большая вероятность, что все ваши пути xpath будут сломаны, и определенно лучше привязать все к идентификаторам DOM.