Что является эквивалентом селектора в "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.

Другие вопросы по тегам