1

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

谢谢你。

4

2 回答 2

1

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

因为您可以使用自定义过滤器:

包含 containsWord notContains startsWith notStartsWith endsWith notEndsWith

我个人认为没有任何理由使用 XPath。此外,XPath 通常被认为是定位 Web 元素的“坏习惯”。

于 2015-05-04T15:55:13.833 回答
1

是的!在 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 都不同)但仍需要测试,因为后端的东西仍然可以在修订时破坏。虽然,如果您正在测试的 Web 应用程序发生了轻微的变化,尽管您的所有 xpath 很有可能都会中断,并且将所有内容锚定到 DOM ID 肯定会更好。

于 2017-10-12T20:32:44.310 回答