什么" XPath"中的选择器的等价物? (Selenium)在FluentLenium中

时间:2015-05-04 13:32:27

标签: selenium-webdriver fluentlenium

我的问题是我无法弄清楚FluentLenium中的选择器XPath(selenium)的等价物。

谢谢。

2 个答案:

答案 0 :(得分:1)

在我看来,FluentLenium没有By.xpath(By.id等),因为它只依赖于CssSelector。

由于您可以使用自定义过滤器:

  

包含   containsWord   notContains   以。。开始   notStartsWith   以。。结束   notEndsWith

我个人认为没有理由使用XPath。此外,XPath通常被认为是一种不良做法"找到网页元素。

答案 1 :(得分:0)

YES!在FluentLenium 3.4.0中,他们有@FindBy注释,允许您通过xpath查找FluentWebElements。

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非常有用,例如当你在一堆具有类似前端的遗留应用程序上工作时,这些应用程序永远不会改变(id / name / class& c)应用程序),但仍然需要进行测试,因为后端的东西仍然可以破坏修订。虽然,如果您测试的网络应用程序发生了轻微的变化,尽管您的所有xpath都很有可能会中断,并且最好将所有内容都固定到DOM ID上。